@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.
Files changed (201) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +222 -0
  3. package/README_CN.md +222 -0
  4. package/dist/cli/args.d.ts +2 -0
  5. package/dist/cli/args.js +611 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/commands.d.ts +2 -0
  8. package/dist/cli/commands.js +270 -0
  9. package/dist/cli/commands.js.map +1 -0
  10. package/dist/cli/errors.d.ts +6 -0
  11. package/dist/cli/errors.js +97 -0
  12. package/dist/cli/errors.js.map +1 -0
  13. package/dist/cli/format/context.d.ts +5 -0
  14. package/dist/cli/format/context.js +490 -0
  15. package/dist/cli/format/context.js.map +1 -0
  16. package/dist/cli/format/debug.d.ts +4 -0
  17. package/dist/cli/format/debug.js +42 -0
  18. package/dist/cli/format/debug.js.map +1 -0
  19. package/dist/cli/format/highlight.d.ts +3 -0
  20. package/dist/cli/format/highlight.js +106 -0
  21. package/dist/cli/format/highlight.js.map +1 -0
  22. package/dist/cli/format/progress.d.ts +9 -0
  23. package/dist/cli/format/progress.js +92 -0
  24. package/dist/cli/format/progress.js.map +1 -0
  25. package/dist/cli/format/range.d.ts +3 -0
  26. package/dist/cli/format/range.js +24 -0
  27. package/dist/cli/format/range.js.map +1 -0
  28. package/dist/cli/format/status.d.ts +7 -0
  29. package/dist/cli/format/status.js +200 -0
  30. package/dist/cli/format/status.js.map +1 -0
  31. package/dist/cli/help.d.ts +1 -0
  32. package/dist/cli/help.js +88 -0
  33. package/dist/cli/help.js.map +1 -0
  34. package/dist/cli/index.d.ts +2 -0
  35. package/dist/cli/index.js +32 -0
  36. package/dist/cli/index.js.map +1 -0
  37. package/dist/cli/types.d.ts +56 -0
  38. package/dist/cli/types.js +10 -0
  39. package/dist/cli/types.js.map +1 -0
  40. package/dist/cli/version.d.ts +1 -0
  41. package/dist/cli/version.js +11 -0
  42. package/dist/cli/version.js.map +1 -0
  43. package/dist/engine/collection/index.d.ts +50 -0
  44. package/dist/engine/collection/index.js +388 -0
  45. package/dist/engine/collection/index.js.map +1 -0
  46. package/dist/engine/errors/details.d.ts +6 -0
  47. package/dist/engine/errors/details.js +27 -0
  48. package/dist/engine/errors/details.js.map +1 -0
  49. package/dist/engine/errors/index.d.ts +14 -0
  50. package/dist/engine/errors/index.js +16 -0
  51. package/dist/engine/errors/index.js.map +1 -0
  52. package/dist/engine/models/catalog.d.ts +47 -0
  53. package/dist/engine/models/catalog.js +68 -0
  54. package/dist/engine/models/catalog.js.map +1 -0
  55. package/dist/engine/models/embeddings.d.ts +25 -0
  56. package/dist/engine/models/embeddings.js +100 -0
  57. package/dist/engine/models/embeddings.js.map +1 -0
  58. package/dist/engine/models/factory.d.ts +5 -0
  59. package/dist/engine/models/factory.js +66 -0
  60. package/dist/engine/models/factory.js.map +1 -0
  61. package/dist/engine/models/index.d.ts +6 -0
  62. package/dist/engine/models/index.js +5 -0
  63. package/dist/engine/models/index.js.map +1 -0
  64. package/dist/engine/models/providers/index.d.ts +2 -0
  65. package/dist/engine/models/providers/index.js +3 -0
  66. package/dist/engine/models/providers/index.js.map +1 -0
  67. package/dist/engine/models/providers/llama-cpp/embedding.d.ts +94 -0
  68. package/dist/engine/models/providers/llama-cpp/embedding.js +459 -0
  69. package/dist/engine/models/providers/llama-cpp/embedding.js.map +1 -0
  70. package/dist/engine/models/providers/llama-cpp/index.d.ts +1 -0
  71. package/dist/engine/models/providers/llama-cpp/index.js +2 -0
  72. package/dist/engine/models/providers/llama-cpp/index.js.map +1 -0
  73. package/dist/engine/models/providers/qwen/embedding.d.ts +38 -0
  74. package/dist/engine/models/providers/qwen/embedding.js +322 -0
  75. package/dist/engine/models/providers/qwen/embedding.js.map +1 -0
  76. package/dist/engine/models/providers/qwen/index.d.ts +1 -0
  77. package/dist/engine/models/providers/qwen/index.js +2 -0
  78. package/dist/engine/models/providers/qwen/index.js.map +1 -0
  79. package/dist/engine/models/ranking.d.ts +15 -0
  80. package/dist/engine/models/ranking.js +2 -0
  81. package/dist/engine/models/ranking.js.map +1 -0
  82. package/dist/engine/models/types.d.ts +30 -0
  83. package/dist/engine/models/types.js +2 -0
  84. package/dist/engine/models/types.js.map +1 -0
  85. package/dist/engine/pipeline/indexing/extractor/code/adapter.d.ts +19 -0
  86. package/dist/engine/pipeline/indexing/extractor/code/adapter.js +24 -0
  87. package/dist/engine/pipeline/indexing/extractor/code/adapter.js.map +1 -0
  88. package/dist/engine/pipeline/indexing/extractor/code/extractor.d.ts +14 -0
  89. package/dist/engine/pipeline/indexing/extractor/code/extractor.js +594 -0
  90. package/dist/engine/pipeline/indexing/extractor/code/extractor.js.map +1 -0
  91. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.d.ts +2 -0
  92. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js +116 -0
  93. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js.map +1 -0
  94. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.d.ts +12 -0
  95. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js +112 -0
  96. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js.map +1 -0
  97. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.d.ts +8 -0
  98. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js +83 -0
  99. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js.map +1 -0
  100. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.d.ts +3 -0
  101. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js +22 -0
  102. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js.map +1 -0
  103. package/dist/engine/pipeline/indexing/extractor/code/languages/c.d.ts +1 -0
  104. package/dist/engine/pipeline/indexing/extractor/code/languages/c.js +15 -0
  105. package/dist/engine/pipeline/indexing/extractor/code/languages/c.js.map +1 -0
  106. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.d.ts +1 -0
  107. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js +18 -0
  108. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js.map +1 -0
  109. package/dist/engine/pipeline/indexing/extractor/code/languages/go.d.ts +2 -0
  110. package/dist/engine/pipeline/indexing/extractor/code/languages/go.js +72 -0
  111. package/dist/engine/pipeline/indexing/extractor/code/languages/go.js.map +1 -0
  112. package/dist/engine/pipeline/indexing/extractor/code/languages/java.d.ts +1 -0
  113. package/dist/engine/pipeline/indexing/extractor/code/languages/java.js +17 -0
  114. package/dist/engine/pipeline/indexing/extractor/code/languages/java.js.map +1 -0
  115. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.d.ts +2 -0
  116. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js +25 -0
  117. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js.map +1 -0
  118. package/dist/engine/pipeline/indexing/extractor/code/languages/python.d.ts +2 -0
  119. package/dist/engine/pipeline/indexing/extractor/code/languages/python.js +53 -0
  120. package/dist/engine/pipeline/indexing/extractor/code/languages/python.js.map +1 -0
  121. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.d.ts +2 -0
  122. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js +29 -0
  123. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js.map +1 -0
  124. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.d.ts +2 -0
  125. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js +37 -0
  126. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js.map +1 -0
  127. package/dist/engine/pipeline/indexing/extractor/index.d.ts +44 -0
  128. package/dist/engine/pipeline/indexing/extractor/index.js +281 -0
  129. package/dist/engine/pipeline/indexing/extractor/index.js.map +1 -0
  130. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.d.ts +13 -0
  131. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js +339 -0
  132. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js.map +1 -0
  133. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.d.ts +4 -0
  134. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js +49 -0
  135. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js.map +1 -0
  136. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.d.ts +3 -0
  137. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js +26 -0
  138. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js.map +1 -0
  139. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.d.ts +2 -0
  140. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js +31 -0
  141. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js.map +1 -0
  142. package/dist/engine/pipeline/indexing/ids.d.ts +1 -0
  143. package/dist/engine/pipeline/indexing/ids.js +5 -0
  144. package/dist/engine/pipeline/indexing/ids.js.map +1 -0
  145. package/dist/engine/pipeline/indexing/index.d.ts +12 -0
  146. package/dist/engine/pipeline/indexing/index.js +538 -0
  147. package/dist/engine/pipeline/indexing/index.js.map +1 -0
  148. package/dist/engine/pipeline/indexing/root-paths.d.ts +7 -0
  149. package/dist/engine/pipeline/indexing/root-paths.js +151 -0
  150. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
  151. package/dist/engine/pipeline/indexing/scanner/index.d.ts +5 -0
  152. package/dist/engine/pipeline/indexing/scanner/index.js +504 -0
  153. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
  154. package/dist/engine/pipeline/search/index.d.ts +12 -0
  155. package/dist/engine/pipeline/search/index.js +761 -0
  156. package/dist/engine/pipeline/search/index.js.map +1 -0
  157. package/dist/engine/service/index.d.ts +2 -0
  158. package/dist/engine/service/index.js +2 -0
  159. package/dist/engine/service/index.js.map +1 -0
  160. package/dist/engine/service/lexical.d.ts +29 -0
  161. package/dist/engine/service/lexical.js +482 -0
  162. package/dist/engine/service/lexical.js.map +1 -0
  163. package/dist/engine/service/root.d.ts +15 -0
  164. package/dist/engine/service/root.js +44 -0
  165. package/dist/engine/service/root.js.map +1 -0
  166. package/dist/engine/service/types.d.ts +157 -0
  167. package/dist/engine/service/types.js +2 -0
  168. package/dist/engine/service/types.js.map +1 -0
  169. package/dist/engine/service/zvec-grep.d.ts +2 -0
  170. package/dist/engine/service/zvec-grep.js +935 -0
  171. package/dist/engine/service/zvec-grep.js.map +1 -0
  172. package/dist/engine/storage/index.d.ts +42 -0
  173. package/dist/engine/storage/index.js +2 -0
  174. package/dist/engine/storage/index.js.map +1 -0
  175. package/dist/engine/storage/zvec.d.ts +51 -0
  176. package/dist/engine/storage/zvec.js +706 -0
  177. package/dist/engine/storage/zvec.js.map +1 -0
  178. package/dist/engine/types.d.ts +266 -0
  179. package/dist/engine/types.js +14 -0
  180. package/dist/engine/types.js.map +1 -0
  181. package/dist/engine/utils/glob.d.ts +6 -0
  182. package/dist/engine/utils/glob.js +110 -0
  183. package/dist/engine/utils/glob.js.map +1 -0
  184. package/dist/engine/utils/hash.d.ts +2 -0
  185. package/dist/engine/utils/hash.js +8 -0
  186. package/dist/engine/utils/hash.js.map +1 -0
  187. package/dist/engine/utils/json.d.ts +4 -0
  188. package/dist/engine/utils/json.js +45 -0
  189. package/dist/engine/utils/json.js.map +1 -0
  190. package/dist/engine/utils/lock.d.ts +19 -0
  191. package/dist/engine/utils/lock.js +254 -0
  192. package/dist/engine/utils/lock.js.map +1 -0
  193. package/dist/engine/utils/path.d.ts +4 -0
  194. package/dist/engine/utils/path.js +18 -0
  195. package/dist/engine/utils/path.js.map +1 -0
  196. package/dist/index.d.ts +6 -0
  197. package/dist/index.js +4 -0
  198. package/dist/index.js.map +1 -0
  199. package/package.json +47 -0
  200. package/skills/zvec-grep/SKILL.md +141 -0
  201. 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,3 @@
1
+ import type { Range } from "../../engine/types.js";
2
+ export declare function rangeLabel(range: Range): string;
3
+ export declare function rangeStartLine(range: Range): number;
@@ -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;
@@ -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,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -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"}