@zvec/zvec-grep 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +222 -0
- package/README_CN.md +222 -0
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.js +611 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/commands.d.ts +2 -0
- package/dist/cli/commands.js +270 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/errors.d.ts +6 -0
- package/dist/cli/errors.js +97 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/format/context.d.ts +5 -0
- package/dist/cli/format/context.js +490 -0
- package/dist/cli/format/context.js.map +1 -0
- package/dist/cli/format/debug.d.ts +4 -0
- package/dist/cli/format/debug.js +42 -0
- package/dist/cli/format/debug.js.map +1 -0
- package/dist/cli/format/highlight.d.ts +3 -0
- package/dist/cli/format/highlight.js +106 -0
- package/dist/cli/format/highlight.js.map +1 -0
- package/dist/cli/format/progress.d.ts +9 -0
- package/dist/cli/format/progress.js +92 -0
- package/dist/cli/format/progress.js.map +1 -0
- package/dist/cli/format/range.d.ts +3 -0
- package/dist/cli/format/range.js +24 -0
- package/dist/cli/format/range.js.map +1 -0
- package/dist/cli/format/status.d.ts +7 -0
- package/dist/cli/format/status.js +200 -0
- package/dist/cli/format/status.js.map +1 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +88 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +32 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/types.d.ts +56 -0
- package/dist/cli/types.js +10 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/version.d.ts +1 -0
- package/dist/cli/version.js +11 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/engine/collection/index.d.ts +50 -0
- package/dist/engine/collection/index.js +388 -0
- package/dist/engine/collection/index.js.map +1 -0
- package/dist/engine/errors/details.d.ts +6 -0
- package/dist/engine/errors/details.js +27 -0
- package/dist/engine/errors/details.js.map +1 -0
- package/dist/engine/errors/index.d.ts +14 -0
- package/dist/engine/errors/index.js +16 -0
- package/dist/engine/errors/index.js.map +1 -0
- package/dist/engine/models/catalog.d.ts +47 -0
- package/dist/engine/models/catalog.js +68 -0
- package/dist/engine/models/catalog.js.map +1 -0
- package/dist/engine/models/embeddings.d.ts +25 -0
- package/dist/engine/models/embeddings.js +100 -0
- package/dist/engine/models/embeddings.js.map +1 -0
- package/dist/engine/models/factory.d.ts +5 -0
- package/dist/engine/models/factory.js +66 -0
- package/dist/engine/models/factory.js.map +1 -0
- package/dist/engine/models/index.d.ts +6 -0
- package/dist/engine/models/index.js +5 -0
- package/dist/engine/models/index.js.map +1 -0
- package/dist/engine/models/providers/index.d.ts +2 -0
- package/dist/engine/models/providers/index.js +3 -0
- package/dist/engine/models/providers/index.js.map +1 -0
- package/dist/engine/models/providers/llama-cpp/embedding.d.ts +94 -0
- package/dist/engine/models/providers/llama-cpp/embedding.js +459 -0
- package/dist/engine/models/providers/llama-cpp/embedding.js.map +1 -0
- package/dist/engine/models/providers/llama-cpp/index.d.ts +1 -0
- package/dist/engine/models/providers/llama-cpp/index.js +2 -0
- package/dist/engine/models/providers/llama-cpp/index.js.map +1 -0
- package/dist/engine/models/providers/qwen/embedding.d.ts +38 -0
- package/dist/engine/models/providers/qwen/embedding.js +322 -0
- package/dist/engine/models/providers/qwen/embedding.js.map +1 -0
- package/dist/engine/models/providers/qwen/index.d.ts +1 -0
- package/dist/engine/models/providers/qwen/index.js +2 -0
- package/dist/engine/models/providers/qwen/index.js.map +1 -0
- package/dist/engine/models/ranking.d.ts +15 -0
- package/dist/engine/models/ranking.js +2 -0
- package/dist/engine/models/ranking.js.map +1 -0
- package/dist/engine/models/types.d.ts +30 -0
- package/dist/engine/models/types.js +2 -0
- package/dist/engine/models/types.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/adapter.d.ts +19 -0
- package/dist/engine/pipeline/indexing/extractor/code/adapter.js +24 -0
- package/dist/engine/pipeline/indexing/extractor/code/adapter.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/extractor.d.ts +14 -0
- package/dist/engine/pipeline/indexing/extractor/code/extractor.js +594 -0
- package/dist/engine/pipeline/indexing/extractor/code/extractor.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/c-family.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js +116 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.d.ts +12 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js +112 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/metadata.d.ts +8 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js +83 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/name-field.d.ts +3 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js +22 -0
- package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/c.d.ts +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/c.js +15 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/c.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.d.ts +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js +18 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/go.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/go.js +72 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/go.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/java.d.ts +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/java.js +17 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/java.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js +25 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/python.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/python.js +53 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/python.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/rust.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js +29 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js +37 -0
- package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/index.d.ts +44 -0
- package/dist/engine/pipeline/indexing/extractor/index.js +281 -0
- package/dist/engine/pipeline/indexing/extractor/index.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/markdown/extractor.d.ts +13 -0
- package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js +339 -0
- package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.d.ts +4 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js +49 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.d.ts +3 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js +26 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js.map +1 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.d.ts +2 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js +31 -0
- package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js.map +1 -0
- package/dist/engine/pipeline/indexing/ids.d.ts +1 -0
- package/dist/engine/pipeline/indexing/ids.js +5 -0
- package/dist/engine/pipeline/indexing/ids.js.map +1 -0
- package/dist/engine/pipeline/indexing/index.d.ts +12 -0
- package/dist/engine/pipeline/indexing/index.js +538 -0
- package/dist/engine/pipeline/indexing/index.js.map +1 -0
- package/dist/engine/pipeline/indexing/root-paths.d.ts +7 -0
- package/dist/engine/pipeline/indexing/root-paths.js +151 -0
- package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
- package/dist/engine/pipeline/indexing/scanner/index.d.ts +5 -0
- package/dist/engine/pipeline/indexing/scanner/index.js +504 -0
- package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
- package/dist/engine/pipeline/search/index.d.ts +12 -0
- package/dist/engine/pipeline/search/index.js +761 -0
- package/dist/engine/pipeline/search/index.js.map +1 -0
- package/dist/engine/service/index.d.ts +2 -0
- package/dist/engine/service/index.js +2 -0
- package/dist/engine/service/index.js.map +1 -0
- package/dist/engine/service/lexical.d.ts +29 -0
- package/dist/engine/service/lexical.js +482 -0
- package/dist/engine/service/lexical.js.map +1 -0
- package/dist/engine/service/root.d.ts +15 -0
- package/dist/engine/service/root.js +44 -0
- package/dist/engine/service/root.js.map +1 -0
- package/dist/engine/service/types.d.ts +157 -0
- package/dist/engine/service/types.js +2 -0
- package/dist/engine/service/types.js.map +1 -0
- package/dist/engine/service/zvec-grep.d.ts +2 -0
- package/dist/engine/service/zvec-grep.js +935 -0
- package/dist/engine/service/zvec-grep.js.map +1 -0
- package/dist/engine/storage/index.d.ts +42 -0
- package/dist/engine/storage/index.js +2 -0
- package/dist/engine/storage/index.js.map +1 -0
- package/dist/engine/storage/zvec.d.ts +51 -0
- package/dist/engine/storage/zvec.js +706 -0
- package/dist/engine/storage/zvec.js.map +1 -0
- package/dist/engine/types.d.ts +266 -0
- package/dist/engine/types.js +14 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/engine/utils/glob.d.ts +6 -0
- package/dist/engine/utils/glob.js +110 -0
- package/dist/engine/utils/glob.js.map +1 -0
- package/dist/engine/utils/hash.d.ts +2 -0
- package/dist/engine/utils/hash.js +8 -0
- package/dist/engine/utils/hash.js.map +1 -0
- package/dist/engine/utils/json.d.ts +4 -0
- package/dist/engine/utils/json.js +45 -0
- package/dist/engine/utils/json.js.map +1 -0
- package/dist/engine/utils/lock.d.ts +19 -0
- package/dist/engine/utils/lock.js +254 -0
- package/dist/engine/utils/lock.js.map +1 -0
- package/dist/engine/utils/path.d.ts +4 -0
- package/dist/engine/utils/path.js +18 -0
- package/dist/engine/utils/path.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
- package/skills/zvec-grep/SKILL.md +141 -0
- package/skills/zvec-grep/agents/openai.yaml +4 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export function shouldUseColor(options) {
|
|
2
|
+
const mode = options.color ?? "auto";
|
|
3
|
+
if (mode === "always") {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
if (mode === "never") {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return process.env.NO_COLOR === undefined && process.stdout.isTTY === true;
|
|
10
|
+
}
|
|
11
|
+
export function createHighlighter(query, enabled) {
|
|
12
|
+
if (!enabled) {
|
|
13
|
+
return (value) => value;
|
|
14
|
+
}
|
|
15
|
+
const terms = highlightTerms(query);
|
|
16
|
+
if (terms.length === 0) {
|
|
17
|
+
return (value) => value;
|
|
18
|
+
}
|
|
19
|
+
return (value) => highlightTermsInText(value, terms);
|
|
20
|
+
}
|
|
21
|
+
function highlightTerms(query) {
|
|
22
|
+
const ignored = new Set([
|
|
23
|
+
"a",
|
|
24
|
+
"an",
|
|
25
|
+
"and",
|
|
26
|
+
"are",
|
|
27
|
+
"as",
|
|
28
|
+
"by",
|
|
29
|
+
"class",
|
|
30
|
+
"enum",
|
|
31
|
+
"find",
|
|
32
|
+
"for",
|
|
33
|
+
"from",
|
|
34
|
+
"function",
|
|
35
|
+
"how",
|
|
36
|
+
"in",
|
|
37
|
+
"interface",
|
|
38
|
+
"is",
|
|
39
|
+
"method",
|
|
40
|
+
"of",
|
|
41
|
+
"on",
|
|
42
|
+
"or",
|
|
43
|
+
"struct",
|
|
44
|
+
"the",
|
|
45
|
+
"to",
|
|
46
|
+
"type",
|
|
47
|
+
"what",
|
|
48
|
+
"where",
|
|
49
|
+
]);
|
|
50
|
+
const terms = new Set();
|
|
51
|
+
const trimmed = query.trim();
|
|
52
|
+
if (trimmed.length > 1) {
|
|
53
|
+
terms.add(trimmed);
|
|
54
|
+
}
|
|
55
|
+
for (const match of trimmed.matchAll(/[A-Za-z_~][A-Za-z0-9_~]*|[0-9]+(?:\.[0-9]+)?/g)) {
|
|
56
|
+
const term = match[0];
|
|
57
|
+
if (term.length >= 2 && !ignored.has(term.toLowerCase())) {
|
|
58
|
+
terms.add(term);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return [...terms].sort((left, right) => right.length - left.length);
|
|
62
|
+
}
|
|
63
|
+
function highlightTermsInText(value, terms) {
|
|
64
|
+
const ranges = [];
|
|
65
|
+
const lower = value.toLowerCase();
|
|
66
|
+
for (const term of terms) {
|
|
67
|
+
const lowerTerm = term.toLowerCase();
|
|
68
|
+
let offset = 0;
|
|
69
|
+
while (lowerTerm.length > 0) {
|
|
70
|
+
const start = lower.indexOf(lowerTerm, offset);
|
|
71
|
+
if (start < 0) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
ranges.push({ start, end: start + lowerTerm.length });
|
|
75
|
+
offset = start + Math.max(lowerTerm.length, 1);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (ranges.length === 0) {
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
const merged = mergeRanges(ranges);
|
|
82
|
+
let highlighted = "";
|
|
83
|
+
let cursor = 0;
|
|
84
|
+
for (const range of merged) {
|
|
85
|
+
highlighted += value.slice(cursor, range.start);
|
|
86
|
+
highlighted += `\x1b[1;33m${value.slice(range.start, range.end)}\x1b[0m`;
|
|
87
|
+
cursor = range.end;
|
|
88
|
+
}
|
|
89
|
+
return highlighted + value.slice(cursor);
|
|
90
|
+
}
|
|
91
|
+
function mergeRanges(ranges) {
|
|
92
|
+
const sorted = ranges
|
|
93
|
+
.filter((range) => range.end > range.start)
|
|
94
|
+
.sort((left, right) => left.start - right.start || right.end - left.end);
|
|
95
|
+
const merged = [];
|
|
96
|
+
for (const range of sorted) {
|
|
97
|
+
const previous = merged.at(-1);
|
|
98
|
+
if (!previous || range.start > previous.end) {
|
|
99
|
+
merged.push({ ...range });
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
previous.end = Math.max(previous.end, range.end);
|
|
103
|
+
}
|
|
104
|
+
return merged;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../src/cli/format/highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IndexProgress } from "../../index.js";
|
|
2
|
+
export type IndexProgressReporter = {
|
|
3
|
+
report(progress: IndexProgress): void;
|
|
4
|
+
finish(): void;
|
|
5
|
+
};
|
|
6
|
+
export type IndexProgressReporterOptions = {
|
|
7
|
+
nonTtyIntervalMs?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function createIndexProgressReporter(options?: IndexProgressReporterOptions): IndexProgressReporter;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
const NON_TTY_PROGRESS_INTERVAL_MS = 15_000;
|
|
2
|
+
export function createIndexProgressReporter(options = {}) {
|
|
3
|
+
const nonTtyIntervalMs = options.nonTtyIntervalMs ?? NON_TTY_PROGRESS_INTERVAL_MS;
|
|
4
|
+
let lastLineLength = 0;
|
|
5
|
+
let finished = false;
|
|
6
|
+
let currentNonTtyLine = "";
|
|
7
|
+
let lastNonTtyWriteTime = 0;
|
|
8
|
+
let heartbeat = null;
|
|
9
|
+
const writeLine = (line, force = false) => {
|
|
10
|
+
if (process.stderr.isTTY) {
|
|
11
|
+
lastLineLength = writeTtyProgressLine(line, lastLineLength);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
currentNonTtyLine = line;
|
|
15
|
+
startHeartbeat();
|
|
16
|
+
const now = Date.now();
|
|
17
|
+
if (force || lastNonTtyWriteTime === 0 || now - lastNonTtyWriteTime >= nonTtyIntervalMs) {
|
|
18
|
+
writeNonTtyProgressLine(line);
|
|
19
|
+
lastNonTtyWriteTime = now;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const startHeartbeat = () => {
|
|
23
|
+
if (heartbeat || nonTtyIntervalMs <= 0) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
heartbeat = setInterval(() => {
|
|
27
|
+
if (finished || currentNonTtyLine.length === 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const now = Date.now();
|
|
31
|
+
if (now - lastNonTtyWriteTime >= nonTtyIntervalMs) {
|
|
32
|
+
writeNonTtyProgressLine(currentNonTtyLine);
|
|
33
|
+
lastNonTtyWriteTime = now;
|
|
34
|
+
}
|
|
35
|
+
}, nonTtyIntervalMs);
|
|
36
|
+
heartbeat.unref?.();
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
report(progress) {
|
|
40
|
+
if (progress.phase === "scanning") {
|
|
41
|
+
if (progress.detail) {
|
|
42
|
+
writeLine(progress.detail);
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (progress.phase === "indexing") {
|
|
47
|
+
const indexed = progress.filesIndexed ?? 0;
|
|
48
|
+
const total = progress.filesTotal ?? 0;
|
|
49
|
+
const detail = progress.detail ? ` ${truncate(progress.detail, 100)}` : "";
|
|
50
|
+
const line = total > 0
|
|
51
|
+
? `Indexing files: ${indexed}/${total}${detail}`
|
|
52
|
+
: `Indexing files...${detail}`;
|
|
53
|
+
writeLine(line);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (progress.phase === "done") {
|
|
57
|
+
const line = progress.detail ?? "Indexing complete";
|
|
58
|
+
writeLine(line, true);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
finish() {
|
|
62
|
+
if (finished) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
finished = true;
|
|
66
|
+
if (heartbeat) {
|
|
67
|
+
clearInterval(heartbeat);
|
|
68
|
+
heartbeat = null;
|
|
69
|
+
}
|
|
70
|
+
if (process.stderr.isTTY && lastLineLength > 0) {
|
|
71
|
+
process.stderr.write("\n");
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function writeTtyProgressLine(line, previousLength) {
|
|
77
|
+
const padding = previousLength > line.length
|
|
78
|
+
? " ".repeat(previousLength - line.length)
|
|
79
|
+
: "";
|
|
80
|
+
process.stderr.write(`\r${line}${padding}`);
|
|
81
|
+
return line.length;
|
|
82
|
+
}
|
|
83
|
+
function writeNonTtyProgressLine(line) {
|
|
84
|
+
process.stderr.write(`${line}\n`);
|
|
85
|
+
}
|
|
86
|
+
function truncate(value, maxLength) {
|
|
87
|
+
if (value.length <= maxLength) {
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
return `${value.slice(0, Math.max(0, maxLength - 1))}...`;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/cli/format/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function rangeLabel(range) {
|
|
2
|
+
if (range.kind === "text") {
|
|
3
|
+
return range.startLine === range.endLine
|
|
4
|
+
? String(range.startLine)
|
|
5
|
+
: `${range.startLine}-${range.endLine}`;
|
|
6
|
+
}
|
|
7
|
+
if (range.kind === "byte") {
|
|
8
|
+
return `bytes:${range.startOffset}-${range.endOffset}`;
|
|
9
|
+
}
|
|
10
|
+
if (range.kind === "page") {
|
|
11
|
+
return `page:${range.page}`;
|
|
12
|
+
}
|
|
13
|
+
if (range.kind === "page_text") {
|
|
14
|
+
return `page:${range.page}`;
|
|
15
|
+
}
|
|
16
|
+
if (range.kind === "page_region") {
|
|
17
|
+
return `page:${range.page}`;
|
|
18
|
+
}
|
|
19
|
+
return "file";
|
|
20
|
+
}
|
|
21
|
+
export function rangeStartLine(range) {
|
|
22
|
+
return range.kind === "text" ? range.startLine : 0;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/cli/format/range.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO;YACtC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;YACzB,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,SAAS,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CollectionIndexStatus, CollectionInfo, IndexResult, ZvecGrepInfoResult } from "../../index.js";
|
|
2
|
+
import type { CliOptions } from "../types.js";
|
|
3
|
+
export declare function printCollectionList(collections: readonly CollectionInfo[], options: CliOptions): void;
|
|
4
|
+
export declare function printCollectionInfo(info: CollectionInfo, status: CollectionIndexStatus | null, options: CliOptions): void;
|
|
5
|
+
export declare function printAnonymousInfo(info: ZvecGrepInfoResult, options: CliOptions): void;
|
|
6
|
+
export declare function printIndexResult(label: string, result: IndexResult, options: CliOptions, rootPaths?: CollectionInfo["rootPaths"]): void;
|
|
7
|
+
export declare function printCollectionRemoveResult(name: string, removed: boolean, options: CliOptions): void;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { shouldUseColor } from "./highlight.js";
|
|
2
|
+
export function printCollectionList(collections, options) {
|
|
3
|
+
const theme = createStatusTheme(options);
|
|
4
|
+
for (const collection of collections) {
|
|
5
|
+
const roots = collection.rootPaths.map(formatRootPath).join(", ");
|
|
6
|
+
console.log(`${theme.accent(collection.name)}\t${theme.path(roots)}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function printCollectionInfo(info, status, options) {
|
|
10
|
+
const theme = createStatusTheme(options);
|
|
11
|
+
printField(theme, "name", theme.accent(info.name));
|
|
12
|
+
printField(theme, "id", info.id);
|
|
13
|
+
printField(theme, "path", theme.path(info.path));
|
|
14
|
+
printField(theme, "embedding", `${info.embedding.provider}/${info.embedding.model}`);
|
|
15
|
+
printField(theme, "roots", theme.path(info.rootPaths.map(formatRootPath).join(", ")));
|
|
16
|
+
if (status) {
|
|
17
|
+
printIndexStatus(theme, status);
|
|
18
|
+
if (statusNeedsRefresh(status)) {
|
|
19
|
+
printField(theme, "suggestion", theme.accent(`zg --collections index ${shellArg(info.name)}`));
|
|
20
|
+
}
|
|
21
|
+
printFailedFilesNote(theme, status, `zg --collections index ${shellArg(info.name)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function printAnonymousInfo(info, options) {
|
|
25
|
+
const theme = createStatusTheme(options);
|
|
26
|
+
printField(theme, "root", theme.path(info.root));
|
|
27
|
+
printField(theme, "initialized", info.initialized ? theme.success("yes") : theme.warning("no"));
|
|
28
|
+
printField(theme, "source", info.source === "index" ? theme.success(info.source) : theme.warning(info.source));
|
|
29
|
+
printField(theme, "home", theme.path(info.home));
|
|
30
|
+
printField(theme, "index", theme.path(info.indexPath));
|
|
31
|
+
if (info.collection) {
|
|
32
|
+
printField(theme, "embedding", `${info.collection.embedding.provider}/${info.collection.embedding.model}`);
|
|
33
|
+
printField(theme, "dimension", String(info.collection.embedding.dimension));
|
|
34
|
+
printField(theme, "metric", info.collection.embedding.metric);
|
|
35
|
+
printField(theme, "roots", theme.path(info.collection.rootPaths.map(formatRootPath).join(", ")));
|
|
36
|
+
}
|
|
37
|
+
if (info.status) {
|
|
38
|
+
printIndexStatus(theme, info.status);
|
|
39
|
+
}
|
|
40
|
+
const suggestion = info.status && statusNeedsRefresh(info.status)
|
|
41
|
+
? "zg --init"
|
|
42
|
+
: info.suggestion;
|
|
43
|
+
if (suggestion) {
|
|
44
|
+
printField(theme, "suggestion", theme.accent(suggestion));
|
|
45
|
+
}
|
|
46
|
+
if (info.status) {
|
|
47
|
+
printFailedFilesNote(theme, info.status, "zg --init");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function printIndexResult(label, result, options, rootPaths) {
|
|
51
|
+
const theme = createStatusTheme(options);
|
|
52
|
+
console.log(theme.accent(label));
|
|
53
|
+
printField(theme, "files", `${result.filesScanned} scanned, `
|
|
54
|
+
+ `${theme.success(String(result.filesAdded))} added, `
|
|
55
|
+
+ `${theme.warning(String(result.filesModified))} modified, `
|
|
56
|
+
+ `${theme.warning(String(result.filesPending))} retried, `
|
|
57
|
+
+ `${theme.muted(String(result.filesUnchanged))} unchanged, `
|
|
58
|
+
+ `${theme.muted(String(result.filesDeleted))} deleted, `
|
|
59
|
+
+ failedCount(theme, result.filesFailed));
|
|
60
|
+
printField(theme, "entities", String(result.entitiesCreated));
|
|
61
|
+
printField(theme, "duration", `${formatDuration(result.durationMs)} ${theme.muted(`(${result.durationMs}ms)`)}`);
|
|
62
|
+
if (rootPaths && rootPaths.length > 0) {
|
|
63
|
+
printField(theme, "roots", theme.path(rootPaths.map(formatRootPath).join(", ")));
|
|
64
|
+
}
|
|
65
|
+
printQueryFilters(theme, options);
|
|
66
|
+
}
|
|
67
|
+
export function printCollectionRemoveResult(name, removed, options) {
|
|
68
|
+
const theme = createStatusTheme(options);
|
|
69
|
+
console.log(removed
|
|
70
|
+
? `${theme.success("Removed")} collection ${theme.accent(name)}`
|
|
71
|
+
: `${theme.warning("Collection not found")}: ${theme.accent(name)}`);
|
|
72
|
+
}
|
|
73
|
+
function printIndexStatus(theme, status) {
|
|
74
|
+
printField(theme, "files", `${status.filesIndexed}/${status.filesScanned} indexed`);
|
|
75
|
+
printField(theme, "fresh", statusNeedsRefresh(status)
|
|
76
|
+
? theme.warning("no")
|
|
77
|
+
: theme.success("yes"));
|
|
78
|
+
printField(theme, "changed", changedCount(theme, status));
|
|
79
|
+
printField(theme, "pending", status.filesPending > 0
|
|
80
|
+
? theme.warning(String(status.filesPending))
|
|
81
|
+
: theme.success(String(status.filesPending)));
|
|
82
|
+
printField(theme, "failed", failedCount(theme, status.filesFailed));
|
|
83
|
+
}
|
|
84
|
+
function statusNeedsRefresh(status) {
|
|
85
|
+
return status.filesAdded > 0
|
|
86
|
+
|| status.filesModified > 0
|
|
87
|
+
|| status.filesDeleted > 0
|
|
88
|
+
|| status.filesPending > 0
|
|
89
|
+
|| status.filesFailed > 0;
|
|
90
|
+
}
|
|
91
|
+
function printFailedFilesNote(theme, status, retryCommand) {
|
|
92
|
+
if (status.filesFailed === 0) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
printField(theme, "note", theme.warning(`retry ${retryCommand}; if failures persist, fix failed files or embedding configuration`));
|
|
96
|
+
const reasons = summarizeFailedFileReasons(status.failedFiles, retryCommand);
|
|
97
|
+
if (reasons) {
|
|
98
|
+
printField(theme, "failed_reasons", theme.danger(reasons));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function summarizeFailedFileReasons(files, retryCommand) {
|
|
102
|
+
const withReasons = files.filter((file) => file.indexStatus?.error);
|
|
103
|
+
if (withReasons.length === 0) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
const shown = withReasons.slice(0, 3).map((file) => `${file.relativePath}: ${clipReason(explainStoredFailureReason(file.indexStatus.error, retryCommand))}`);
|
|
107
|
+
const remaining = withReasons.length - shown.length;
|
|
108
|
+
return remaining > 0
|
|
109
|
+
? `${shown.join("; ")}; and ${remaining} more`
|
|
110
|
+
: shown.join("; ");
|
|
111
|
+
}
|
|
112
|
+
function explainStoredFailureReason(reason, retryCommand) {
|
|
113
|
+
const legacy = /ZVEC_GREP\.ENGINE\.INDEXING\.FILE_FAILED: Indexing file failed \(.*\bstage=([^) ]+)/.exec(reason);
|
|
114
|
+
if (!legacy) {
|
|
115
|
+
return reason;
|
|
116
|
+
}
|
|
117
|
+
return `${legacy[1]} failed; this stored failure was recorded without the underlying cause, rerun ${retryCommand} to refresh the detailed error`;
|
|
118
|
+
}
|
|
119
|
+
function clipReason(reason) {
|
|
120
|
+
const compact = reason.replace(/\s+/g, " ").trim();
|
|
121
|
+
const maxLength = 240;
|
|
122
|
+
return compact.length > maxLength
|
|
123
|
+
? `${compact.slice(0, maxLength - 3)}...`
|
|
124
|
+
: compact;
|
|
125
|
+
}
|
|
126
|
+
function changedCount(theme, status) {
|
|
127
|
+
const count = status.filesAdded + status.filesModified + status.filesDeleted;
|
|
128
|
+
const value = `${status.filesAdded} added, ${status.filesModified} modified, ${status.filesDeleted} deleted`;
|
|
129
|
+
return count > 0 ? theme.warning(value) : theme.success(value);
|
|
130
|
+
}
|
|
131
|
+
function printQueryFilters(theme, options) {
|
|
132
|
+
if (options.modifiedAfter !== undefined) {
|
|
133
|
+
printField(theme, "modified_after", formatTimeFilter(options.modifiedAfter));
|
|
134
|
+
}
|
|
135
|
+
if (options.modifiedBefore !== undefined) {
|
|
136
|
+
printField(theme, "modified_before", formatTimeFilter(options.modifiedBefore));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function printField(theme, label, value) {
|
|
140
|
+
console.log(`${theme.label(label)}\t${value}`);
|
|
141
|
+
}
|
|
142
|
+
function failedCount(theme, count) {
|
|
143
|
+
return count > 0 ? theme.danger(`${count} failed`) : theme.success(`${count} failed`);
|
|
144
|
+
}
|
|
145
|
+
function createStatusTheme(options) {
|
|
146
|
+
if (!shouldUseColor(options)) {
|
|
147
|
+
return {
|
|
148
|
+
label: identity,
|
|
149
|
+
path: identity,
|
|
150
|
+
success: identity,
|
|
151
|
+
warning: identity,
|
|
152
|
+
danger: identity,
|
|
153
|
+
accent: identity,
|
|
154
|
+
muted: identity,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
label: (value) => `\x1b[2m${value}\x1b[0m`,
|
|
159
|
+
path: (value) => `\x1b[36m${value}\x1b[0m`,
|
|
160
|
+
success: (value) => `\x1b[32m${value}\x1b[0m`,
|
|
161
|
+
warning: (value) => `\x1b[33m${value}\x1b[0m`,
|
|
162
|
+
danger: (value) => `\x1b[31m${value}\x1b[0m`,
|
|
163
|
+
accent: (value) => `\x1b[1m${value}\x1b[0m`,
|
|
164
|
+
muted: (value) => `\x1b[2m${value}\x1b[0m`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function formatRootPath(root) {
|
|
168
|
+
const filters = [
|
|
169
|
+
root.include && root.include.length > 0 ? `include=${root.include.join("|")}` : undefined,
|
|
170
|
+
root.exclude && root.exclude.length > 0 ? `exclude=${root.exclude.join("|")}` : undefined,
|
|
171
|
+
].filter((part) => part !== undefined);
|
|
172
|
+
return filters.length > 0
|
|
173
|
+
? `${root.absolutePath} (${filters.join(" ")})`
|
|
174
|
+
: root.absolutePath;
|
|
175
|
+
}
|
|
176
|
+
function formatDuration(ms) {
|
|
177
|
+
if (ms < 1000) {
|
|
178
|
+
return `${ms}ms`;
|
|
179
|
+
}
|
|
180
|
+
const totalSeconds = Math.round(ms / 1000);
|
|
181
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
182
|
+
const seconds = totalSeconds % 60;
|
|
183
|
+
if (minutes === 0) {
|
|
184
|
+
return `${seconds}s`;
|
|
185
|
+
}
|
|
186
|
+
return `${minutes}m ${seconds}s`;
|
|
187
|
+
}
|
|
188
|
+
function formatTimeFilter(value) {
|
|
189
|
+
return `${new Date(value).toISOString()} (${value})`;
|
|
190
|
+
}
|
|
191
|
+
function identity(value) {
|
|
192
|
+
return value;
|
|
193
|
+
}
|
|
194
|
+
function shellArg(value) {
|
|
195
|
+
if (/^[A-Za-z0-9_./:=@+-]+$/.test(value)) {
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
198
|
+
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/format/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function printHelp(version: string): void;
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export function printHelp(version) {
|
|
2
|
+
console.log(`zvec-grep ${version}
|
|
3
|
+
|
|
4
|
+
Usage:
|
|
5
|
+
zg [options] <query...>
|
|
6
|
+
zg "multi word query" "another query"
|
|
7
|
+
zg --rg "Symbol|LogMessage"
|
|
8
|
+
zg --rg -F "ExactSymbolOrText" src
|
|
9
|
+
zg <query...> --fts <query...> --vector <query...>
|
|
10
|
+
zg --fts <query...>
|
|
11
|
+
zg --human [options] <query...>
|
|
12
|
+
zg --init --embedding <model> [root]
|
|
13
|
+
zg --init --embedding <model> --include "src/**" --exclude "dist/**,node_modules/**" [root]
|
|
14
|
+
zg --init --embedding local/embeddinggemma-300m [root]
|
|
15
|
+
zg --info [root]
|
|
16
|
+
zg --collection <name> [options] <query...>
|
|
17
|
+
zg --collections
|
|
18
|
+
zg --collections info <name>
|
|
19
|
+
zg --collections index <name> [root]
|
|
20
|
+
zg --collections remove <name>
|
|
21
|
+
|
|
22
|
+
Output:
|
|
23
|
+
default Agent markdown grouped by file
|
|
24
|
+
--human Human-readable ranked output
|
|
25
|
+
--preview <none|short|full> Indexed result preview size (default none; --human default full)
|
|
26
|
+
default --rg output path:range plus numbered lines; no source label
|
|
27
|
+
context blocks include matched:<line>
|
|
28
|
+
|
|
29
|
+
Query:
|
|
30
|
+
Each shell argument is one hybrid query. Quote multi-word queries.
|
|
31
|
+
Without --limit, 1-3 query groups return up to 10 each; more groups share about 30.
|
|
32
|
+
Default indexed queries require an initialized anonymous index. Run zg --init first.
|
|
33
|
+
Existing anonymous indexes are checked and incrementally refreshed before query.
|
|
34
|
+
Init skips dependency/build/cache dirs, .gitignore entries, and files over 1 MB by default.
|
|
35
|
+
New indexes require --embedding <model> or ZVEC_GREP_EMBEDDING; existing indexes reuse stored schema.
|
|
36
|
+
--rg is explicit exhaustive ripgrep search and works without an index.
|
|
37
|
+
Without --limit, --rg returns every match.
|
|
38
|
+
--rg uses rg regex syntax by default. Use -F/--fixed-strings for literal text.
|
|
39
|
+
Use -e/--regexp when the pattern begins with "-".
|
|
40
|
+
--rg accepts common agent rg flags: -n, -H, -F, -i, -w, -A/-B/-C,
|
|
41
|
+
-e/--regexp, -g/--glob, --hidden, -t/--type, -T/--type-not,
|
|
42
|
+
--max-depth, --ignore-file, --no-ignore, --smart-case, and --pcre2.
|
|
43
|
+
|
|
44
|
+
Options:
|
|
45
|
+
--debug Print diagnostics to stderr
|
|
46
|
+
--trace Print inline per-hit search trace
|
|
47
|
+
--info Show anonymous index status for this root
|
|
48
|
+
--color <auto|always|never> Colorize human/status output (default auto)
|
|
49
|
+
--no-color Disable color output
|
|
50
|
+
--limit <n> Maximum returned items per query/group
|
|
51
|
+
--preview <none|short|full> Control indexed source preview; not used with --rg
|
|
52
|
+
--rg Managed ripgrep search with zvec-grep output
|
|
53
|
+
--fts <query...> Add exact/lexical search routes
|
|
54
|
+
--vector <query...> Add semantic/vector search routes
|
|
55
|
+
--no-auto-update Do not refresh an existing stale anonymous index before query
|
|
56
|
+
--no-fallback Compatibility flag; anonymous queries already require an index
|
|
57
|
+
--collection <name> Query a named collection
|
|
58
|
+
--collections Manage named collections
|
|
59
|
+
--home <path> Named collection registry home
|
|
60
|
+
--embedding <model> Embedding model, e.g. local/embeddinggemma-300m or qwen/text-embedding-v4
|
|
61
|
+
--model-cache <path> Local model cache directory
|
|
62
|
+
--gpu Try GPU acceleration; falls back to CPU if unavailable
|
|
63
|
+
--no-gpu Force CPU local embeddings
|
|
64
|
+
--llama-gpu <mode> CPU by default; auto, metal, vulkan, cuda, off
|
|
65
|
+
--embedding-parallelism <n> Local embedding context parallelism
|
|
66
|
+
--api-key <key> Embedding provider API key
|
|
67
|
+
--endpoint <url> Embedding provider endpoint
|
|
68
|
+
--include <glob> Include indexed/query paths
|
|
69
|
+
--exclude <glob> Exclude indexed/query paths
|
|
70
|
+
--modified-after <time> Query files modified after time
|
|
71
|
+
--modified-before <time> Query files modified before time
|
|
72
|
+
--symbol-type <type> module, class, interface, function, value, alias
|
|
73
|
+
--prefer-symbol Prefer exact indexed symbols
|
|
74
|
+
--rebuild Rebuild on init/index
|
|
75
|
+
--reset-paths Clear inherited include/exclude filters on rebuild
|
|
76
|
+
|
|
77
|
+
Environment:
|
|
78
|
+
ZVEC_GREP_HOME
|
|
79
|
+
ZVEC_GREP_EMBEDDING
|
|
80
|
+
ZVEC_GREP_MODEL_CACHE
|
|
81
|
+
ZVEC_GREP_LLAMA_GPU
|
|
82
|
+
ZVEC_GREP_EMBED_PARALLELISM
|
|
83
|
+
ZVEC_GREP_API_KEY
|
|
84
|
+
ZVEC_GREP_ENDPOINT
|
|
85
|
+
NO_COLOR
|
|
86
|
+
`);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFjC,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { parseArgs } from "./args.js";
|
|
3
|
+
import { runParsedCommand } from "./commands.js";
|
|
4
|
+
import { colorModeFromArgs, printError } from "./errors.js";
|
|
5
|
+
import { printHelp } from "./help.js";
|
|
6
|
+
import { readPackageVersion } from "./version.js";
|
|
7
|
+
const PACKAGE_VERSION = readPackageVersion();
|
|
8
|
+
void main();
|
|
9
|
+
async function main() {
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
const errorColor = colorModeFromArgs(args);
|
|
12
|
+
try {
|
|
13
|
+
const parsed = parseArgs(args);
|
|
14
|
+
if (parsed.options.version) {
|
|
15
|
+
console.log(PACKAGE_VERSION);
|
|
16
|
+
process.exitCode = 0;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (parsed.options.help || args.length === 0) {
|
|
20
|
+
printHelp(PACKAGE_VERSION);
|
|
21
|
+
process.exitCode = args.length === 0 ? 1 : 0;
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await runParsedCommand(parsed);
|
|
25
|
+
process.exitCode = 0;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
printError(error, { color: errorColor });
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;AAG7C,KAAK,IAAI,EAAE,CAAC;AAGZ,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,SAAS,CAAC,eAAe,CAAC,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|