@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,459 @@
1
+ import { closeSync, existsSync, mkdirSync, openSync, readSync, statSync, unlinkSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { EngineError } from "../../../errors/index.js";
4
+ import { defaultHome } from "../../../utils/path.js";
5
+ import { EmbeddingModel, } from "../../embeddings.js";
6
+ const DEFAULT_MODEL_CACHE_DIR = join(defaultHome(), "models");
7
+ const GGUF_MAGIC = Buffer.from("GGUF");
8
+ const DEFAULT_PARALLELISM_CAP = 8;
9
+ const SUPPRESSED_LLAMA_CPP_LOG_MESSAGES = new Set([
10
+ "Failed to get swap info",
11
+ ]);
12
+ let nodeLlamaCppImport = null;
13
+ let nodeLlamaCppLoader = defaultNodeLlamaCppLoader;
14
+ const failedGpuInitModes = new Set();
15
+ let cpuCompatibleFallbackWarningShown = false;
16
+ async function defaultNodeLlamaCppLoader() {
17
+ const moduleName = "node-llama-cpp";
18
+ try {
19
+ installDarwinMetalResidencyMitigation();
20
+ return await import(moduleName);
21
+ }
22
+ catch (cause) {
23
+ throw new EngineError("node-llama-cpp is required for local embedding models", {
24
+ code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_MISSING_DEPENDENCY",
25
+ context: "Install optional dependency node-llama-cpp or reinstall zvec-grep with optional dependencies enabled",
26
+ cause,
27
+ });
28
+ }
29
+ }
30
+ function installDarwinMetalResidencyMitigation() {
31
+ if (process.platform !== "darwin") {
32
+ return;
33
+ }
34
+ if (process.env.ZVEC_GREP_METAL_KEEP_RESIDENCY === "1") {
35
+ return;
36
+ }
37
+ process.env.GGML_METAL_NO_RESIDENCY ??= "1";
38
+ }
39
+ async function loadNodeLlamaCpp() {
40
+ nodeLlamaCppImport ??= nodeLlamaCppLoader();
41
+ return nodeLlamaCppImport;
42
+ }
43
+ export function setLlamaCppRuntimeForTesting(loader) {
44
+ nodeLlamaCppImport = null;
45
+ nodeLlamaCppLoader = loader ?? defaultNodeLlamaCppLoader;
46
+ failedGpuInitModes.clear();
47
+ cpuCompatibleFallbackWarningShown = false;
48
+ }
49
+ export class LlamaCppEmbeddingModel extends EmbeddingModel {
50
+ entry;
51
+ ref;
52
+ dimension;
53
+ metric;
54
+ supportedContentKinds = ["text"];
55
+ limits;
56
+ recommendedIndexConcurrency = 1;
57
+ modelCacheDir;
58
+ gpu;
59
+ embeddingParallelism;
60
+ llama = null;
61
+ model = null;
62
+ contexts = [];
63
+ llamaLoadPromise = null;
64
+ modelLoadPromise = null;
65
+ contextsCreatePromise = null;
66
+ usingCpuFallback = false;
67
+ disposed = false;
68
+ constructor(entry, options) {
69
+ super();
70
+ this.entry = entry;
71
+ this.ref = {
72
+ provider: entry.provider,
73
+ model: entry.model,
74
+ };
75
+ this.dimension = entry.dimension;
76
+ this.metric = entry.metric;
77
+ this.limits = {
78
+ maxBatchSize: entry.maxBatchSize,
79
+ maxInputTokens: entry.contextSize,
80
+ };
81
+ this.modelCacheDir = options.modelCacheDir ?? process.env.ZVEC_GREP_MODEL_CACHE ?? DEFAULT_MODEL_CACHE_DIR;
82
+ this.gpu = options.llamaGpu ?? resolveLlamaGpuMode(process.env.ZVEC_GREP_LLAMA_GPU);
83
+ this.embeddingParallelism = options.embeddingParallelism ?? resolveParallelismOverride(process.env.ZVEC_GREP_EMBED_PARALLELISM);
84
+ }
85
+ async doEmbed(contents, options) {
86
+ this.ensureNotDisposed();
87
+ const texts = contents.map((content) => formatTextForEmbedding(content.text, options.purpose, this.entry));
88
+ try {
89
+ return await this.embedTexts(texts);
90
+ }
91
+ catch (cause) {
92
+ throw new EngineError("llama.cpp embedding failed", {
93
+ code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_EMBED_FAILED",
94
+ context: `model=${this.entry.id}`,
95
+ cause,
96
+ });
97
+ }
98
+ }
99
+ async dispose() {
100
+ if (this.disposed) {
101
+ return;
102
+ }
103
+ this.disposed = true;
104
+ await this.disposeLoadedRuntime();
105
+ this.modelLoadPromise = null;
106
+ this.contextsCreatePromise = null;
107
+ }
108
+ async embedTexts(texts) {
109
+ const contexts = await this.ensureEmbeddingContexts(texts.length);
110
+ const chunkSize = Math.ceil(texts.length / contexts.length);
111
+ const chunks = contexts.map((context, index) => ({
112
+ context,
113
+ texts: texts.slice(index * chunkSize, (index + 1) * chunkSize),
114
+ })).filter((chunk) => chunk.texts.length > 0);
115
+ const results = await Promise.all(chunks.map(async (chunk) => {
116
+ const vectors = [];
117
+ for (const text of chunk.texts) {
118
+ const safeText = this.truncateToContextSize(text);
119
+ const embedding = await chunk.context.getEmbeddingFor(safeText);
120
+ vectors.push(Array.from(embedding.vector));
121
+ }
122
+ return vectors;
123
+ }));
124
+ return results.flat();
125
+ }
126
+ async ensureLlama() {
127
+ if (this.llama) {
128
+ return this.llama;
129
+ }
130
+ if (this.llamaLoadPromise) {
131
+ return await this.llamaLoadPromise;
132
+ }
133
+ this.llamaLoadPromise = this.loadLlamaWithFallback();
134
+ try {
135
+ return await this.llamaLoadPromise;
136
+ }
137
+ finally {
138
+ this.llamaLoadPromise = null;
139
+ }
140
+ }
141
+ async loadLlamaWithFallback() {
142
+ const runtime = await loadNodeLlamaCpp();
143
+ const requestedGpu = this.usingCpuFallback ? false : this.gpu;
144
+ const load = (gpu) => runtime.getLlama({
145
+ build: "autoAttempt",
146
+ logLevel: runtime.LlamaLogLevel?.error,
147
+ logger: llamaCppLogger,
148
+ gpu,
149
+ progressLogs: false,
150
+ });
151
+ if (requestedGpu === false) {
152
+ this.llama = await this.loadCpuCompatibleLlama(load);
153
+ return this.llama;
154
+ }
155
+ if (failedGpuInitModes.has(requestedGpu)) {
156
+ process.stderr.write(`zvec-grep warning: skipping previously failed llama.cpp GPU init${requestedGpu === "auto" ? "" : ` for ZVEC_GREP_LLAMA_GPU=${requestedGpu}`}, using CPU.\n`);
157
+ this.usingCpuFallback = true;
158
+ this.llama = await this.loadCpuCompatibleLlama(load);
159
+ return this.llama;
160
+ }
161
+ try {
162
+ this.llama = await load(requestedGpu);
163
+ }
164
+ catch (error) {
165
+ failedGpuInitModes.add(requestedGpu);
166
+ process.stderr.write(`zvec-grep warning: llama.cpp GPU init failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
167
+ this.usingCpuFallback = true;
168
+ this.llama = await this.loadCpuCompatibleLlama(load);
169
+ }
170
+ return this.llama;
171
+ }
172
+ async loadCpuCompatibleLlama(load) {
173
+ try {
174
+ return await load(false);
175
+ }
176
+ catch (error) {
177
+ if (!cpuCompatibleFallbackWarningShown) {
178
+ cpuCompatibleFallbackWarningShown = true;
179
+ process.stderr.write(`zvec-grep warning: CPU-only llama.cpp backend unavailable (${formatErrorMessage(error)}); using packaged backend with GPU model offloading disabled.\n`);
180
+ }
181
+ return await load("auto");
182
+ }
183
+ }
184
+ async ensureModel() {
185
+ if (this.model) {
186
+ return this.model;
187
+ }
188
+ if (this.modelLoadPromise) {
189
+ return await this.modelLoadPromise;
190
+ }
191
+ this.modelLoadPromise = this.loadModelWithFallback();
192
+ try {
193
+ return await this.modelLoadPromise;
194
+ }
195
+ finally {
196
+ this.modelLoadPromise = null;
197
+ }
198
+ }
199
+ async loadModelWithFallback() {
200
+ try {
201
+ return await this.loadModel();
202
+ }
203
+ catch (error) {
204
+ if (!this.canRetryGpuOperationOnCpu()) {
205
+ throw error;
206
+ }
207
+ process.stderr.write(`zvec-grep warning: llama.cpp GPU model load failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
208
+ this.usingCpuFallback = true;
209
+ await this.disposeLoadedRuntime();
210
+ return await this.loadModel();
211
+ }
212
+ }
213
+ async loadModel() {
214
+ const llama = await this.ensureLlama();
215
+ const modelPath = await this.resolveModelPath();
216
+ const model = await llama.loadModel(this.modelLoadOptions(modelPath));
217
+ this.model = model;
218
+ return model;
219
+ }
220
+ modelLoadOptions(modelPath) {
221
+ return {
222
+ modelPath,
223
+ ...(this.shouldDisableModelGpuOffload() ? { gpuLayers: 0 } : {}),
224
+ };
225
+ }
226
+ async ensureEmbeddingContexts(textCount) {
227
+ const targetParallelism = await this.resolveEffectiveParallelism(textCount);
228
+ if (this.contexts.length >= targetParallelism) {
229
+ return this.contexts.slice(0, targetParallelism);
230
+ }
231
+ if (this.contextsCreatePromise) {
232
+ await this.contextsCreatePromise;
233
+ if (this.contexts.length >= targetParallelism) {
234
+ return this.contexts.slice(0, targetParallelism);
235
+ }
236
+ }
237
+ this.contextsCreatePromise = this.createEmbeddingContextsWithFallback(targetParallelism);
238
+ try {
239
+ await this.contextsCreatePromise;
240
+ return this.contexts.slice(0, targetParallelism);
241
+ }
242
+ finally {
243
+ this.contextsCreatePromise = null;
244
+ }
245
+ }
246
+ async createEmbeddingContextsWithFallback(targetParallelism) {
247
+ try {
248
+ return await this.createEmbeddingContexts(targetParallelism);
249
+ }
250
+ catch (error) {
251
+ if (!this.canRetryGpuOperationOnCpu()) {
252
+ throw error;
253
+ }
254
+ process.stderr.write(`zvec-grep warning: llama.cpp GPU embedding context failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
255
+ this.usingCpuFallback = true;
256
+ await this.disposeLoadedRuntime();
257
+ return await this.createEmbeddingContexts(targetParallelism);
258
+ }
259
+ }
260
+ async createEmbeddingContexts(targetParallelism) {
261
+ const model = await this.ensureModel();
262
+ const threads = await this.resolveThreadsPerContext(targetParallelism);
263
+ const initialContextCount = this.contexts.length;
264
+ while (this.contexts.length < targetParallelism) {
265
+ try {
266
+ this.contexts.push(await model.createEmbeddingContext({
267
+ contextSize: this.entry.contextSize,
268
+ threads,
269
+ }));
270
+ }
271
+ catch (error) {
272
+ if (this.contexts.length === initialContextCount) {
273
+ throw error;
274
+ }
275
+ break;
276
+ }
277
+ }
278
+ return this.contexts.slice(0, targetParallelism);
279
+ }
280
+ canRetryGpuOperationOnCpu() {
281
+ return this.gpu !== false
282
+ && !this.usingCpuFallback;
283
+ }
284
+ shouldDisableModelGpuOffload() {
285
+ return this.gpu === false
286
+ || this.usingCpuFallback;
287
+ }
288
+ async disposeLoadedRuntime() {
289
+ const contexts = this.contexts;
290
+ this.contexts = [];
291
+ for (const context of contexts) {
292
+ await context.dispose?.();
293
+ }
294
+ const model = this.model;
295
+ this.model = null;
296
+ await model?.dispose?.();
297
+ const llama = this.llama;
298
+ this.llama = null;
299
+ if (llama?.dispose) {
300
+ await Promise.race([
301
+ Promise.resolve(llama.dispose()),
302
+ new Promise((resolve) => setTimeout(resolve, 1000)),
303
+ ]);
304
+ }
305
+ this.modelLoadPromise = null;
306
+ this.llamaLoadPromise = null;
307
+ }
308
+ async resolveModelPath() {
309
+ mkdirSync(this.modelCacheDir, { recursive: true });
310
+ const runtime = await loadNodeLlamaCpp();
311
+ const modelPath = await runtime.resolveModelFile(this.entry.uri, {
312
+ directory: this.modelCacheDir,
313
+ cli: false,
314
+ });
315
+ validateGgufFile(modelPath, this.entry.uri);
316
+ return modelPath;
317
+ }
318
+ async resolveParallelism() {
319
+ if (this.embeddingParallelism !== undefined) {
320
+ return this.embeddingParallelism;
321
+ }
322
+ const llama = await this.ensureLlama();
323
+ if (!this.shouldDisableModelGpuOffload() && llama.gpu && llama.getVramState) {
324
+ try {
325
+ const vram = await llama.getVramState();
326
+ const freeMb = vram.free / (1024 * 1024);
327
+ return Math.max(1, Math.min(DEFAULT_PARALLELISM_CAP, Math.floor((freeMb * 0.25) / 150)));
328
+ }
329
+ catch {
330
+ return 2;
331
+ }
332
+ }
333
+ return 1;
334
+ }
335
+ async resolveEffectiveParallelism(textCount) {
336
+ const requested = await this.resolveParallelism();
337
+ return Math.max(1, Math.min(requested, Math.max(1, textCount)));
338
+ }
339
+ async resolveThreadsPerContext(parallelism) {
340
+ const llama = await this.ensureLlama();
341
+ if (!this.shouldDisableModelGpuOffload() && llama.gpu) {
342
+ return 0;
343
+ }
344
+ const cores = llama.cpuMathCores ?? 4;
345
+ if (parallelism <= 1) {
346
+ return 0;
347
+ }
348
+ return Math.max(1, Math.floor(cores / parallelism));
349
+ }
350
+ truncateToContextSize(text) {
351
+ const model = this.model;
352
+ if (!model?.tokenize || !model.detokenize) {
353
+ return text;
354
+ }
355
+ const limit = Math.max(1, Math.min(this.entry.contextSize, model.trainContextSize ?? this.entry.contextSize));
356
+ const tokens = model.tokenize(text);
357
+ if (tokens.length <= limit) {
358
+ return text;
359
+ }
360
+ return model.detokenize(tokens.slice(0, Math.max(1, limit - 4)));
361
+ }
362
+ ensureNotDisposed() {
363
+ if (this.disposed) {
364
+ throw new EngineError("llama.cpp embedding model is disposed", {
365
+ code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_DISPOSED",
366
+ context: `model=${this.entry.id}`,
367
+ });
368
+ }
369
+ }
370
+ }
371
+ function formatErrorMessage(error) {
372
+ return error instanceof Error ? error.message : String(error);
373
+ }
374
+ function llamaCppLogger(_level, message) {
375
+ const trimmed = message.trim();
376
+ if (SUPPRESSED_LLAMA_CPP_LOG_MESSAGES.has(trimmed)) {
377
+ return;
378
+ }
379
+ process.stderr.write(formatLlamaCppLogMessage(message));
380
+ }
381
+ function formatLlamaCppLogMessage(message) {
382
+ const text = message.trimEnd();
383
+ if (!text) {
384
+ return "";
385
+ }
386
+ return `${text
387
+ .split("\n")
388
+ .map((line) => `[node-llama-cpp] ${line}`)
389
+ .join("\n")}\n`;
390
+ }
391
+ function formatTextForEmbedding(text, purpose, entry) {
392
+ if (entry.format === "qwen3") {
393
+ return purpose === "query"
394
+ ? `Instruct: Retrieve relevant documents for the given query\nQuery: ${text}`
395
+ : text;
396
+ }
397
+ return purpose === "query"
398
+ ? `task: search result | query: ${text}`
399
+ : `title: none | text: ${text}`;
400
+ }
401
+ function resolveLlamaGpuMode(envValue) {
402
+ const normalized = envValue?.trim().toLowerCase() ?? "";
403
+ if (!normalized) {
404
+ return false;
405
+ }
406
+ if (["false", "off", "none", "disable", "disabled", "0"].includes(normalized)) {
407
+ return false;
408
+ }
409
+ if (normalized === "auto" || normalized === "metal" || normalized === "vulkan" || normalized === "cuda") {
410
+ return normalized;
411
+ }
412
+ process.stderr.write(`zvec-grep warning: invalid ZVEC_GREP_LLAMA_GPU="${envValue}", using CPU.\n`);
413
+ return false;
414
+ }
415
+ function resolveParallelismOverride(envValue) {
416
+ const normalized = envValue?.trim() ?? "";
417
+ if (!normalized) {
418
+ return undefined;
419
+ }
420
+ const parsed = Number.parseInt(normalized, 10);
421
+ if (!Number.isInteger(parsed) || parsed < 1) {
422
+ process.stderr.write(`zvec-grep warning: invalid ZVEC_GREP_EMBED_PARALLELISM="${envValue}", using automatic parallelism.\n`);
423
+ return undefined;
424
+ }
425
+ return Math.min(DEFAULT_PARALLELISM_CAP, parsed);
426
+ }
427
+ function validateGgufFile(filePath, modelUri) {
428
+ if (!existsSync(filePath)) {
429
+ return;
430
+ }
431
+ const fd = openSync(filePath, "r");
432
+ const sniff = Buffer.alloc(512);
433
+ try {
434
+ readSync(fd, sniff, 0, 512, 0);
435
+ }
436
+ finally {
437
+ closeSync(fd);
438
+ }
439
+ const header = sniff.subarray(0, 4);
440
+ if (header.equals(GGUF_MAGIC)) {
441
+ return;
442
+ }
443
+ const text = sniff.toString("utf8").toLowerCase();
444
+ const isHtml = text.includes("<!doctype") || text.includes("<html");
445
+ const got = header.toString("utf8");
446
+ const sizeKb = existsSync(filePath) ? (statSync(filePath).size / 1024).toFixed(0) : "0";
447
+ unlinkSync(filePath);
448
+ if (isHtml) {
449
+ throw new EngineError("Downloaded local embedding model is HTML, not GGUF", {
450
+ code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_INVALID_GGUF_HTML",
451
+ context: `model=${modelUri} path=${filePath} sizeKB=${sizeKb}`,
452
+ });
453
+ }
454
+ throw new EngineError("Local embedding model is not a valid GGUF file", {
455
+ code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_INVALID_GGUF",
456
+ context: `model=${modelUri} path=${filePath} expected=GGUF actual=${got} sizeKB=${sizeKb}`,
457
+ });
458
+ }
459
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../../../src/engine/models/providers/llama-cpp/embedding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { LlamaCppEmbeddingModel, setLlamaCppRuntimeForTesting, } from "./embedding.js";
@@ -0,0 +1,2 @@
1
+ export { LlamaCppEmbeddingModel, setLlamaCppRuntimeForTesting, } from "./embedding.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/engine/models/providers/llama-cpp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Content } from "../../../types.js";
2
+ import { EmbeddingModel, type EmbeddingOptions, type EmbeddingVector } from "../../embeddings.js";
3
+ import type { ModelProviderOptions } from "../../types.js";
4
+ export declare class QwenTextEmbeddingV4Model extends EmbeddingModel {
5
+ readonly ref: {
6
+ readonly provider: "qwen";
7
+ readonly model: "text-embedding-v4";
8
+ };
9
+ readonly dimension = 1024;
10
+ readonly metric = "cosine";
11
+ readonly supportedContentKinds: readonly ["text"];
12
+ readonly limits: {
13
+ readonly maxBatchSize: 10;
14
+ readonly maxInputTokens: 8192;
15
+ };
16
+ private readonly apiKey;
17
+ private readonly endpoint;
18
+ constructor(options: ModelProviderOptions);
19
+ protected doEmbed(contents: readonly Content[], _options: Required<EmbeddingOptions>): Promise<EmbeddingVector[]>;
20
+ }
21
+ export declare class Qwen3VlEmbeddingModel extends EmbeddingModel {
22
+ readonly ref: {
23
+ readonly provider: "qwen";
24
+ readonly model: "qwen3-vl-embedding";
25
+ };
26
+ readonly dimension = 2560;
27
+ readonly metric = "cosine";
28
+ readonly supportedContentKinds: readonly ["text", "image"];
29
+ readonly limits: {
30
+ readonly maxBatchSize: 20;
31
+ readonly maxInputTokens: 32000;
32
+ readonly maxImageBytes: number;
33
+ };
34
+ private readonly apiKey;
35
+ private readonly endpoint;
36
+ constructor(options: ModelProviderOptions);
37
+ protected doEmbed(contents: readonly Content[], _options: Required<EmbeddingOptions>): Promise<EmbeddingVector[]>;
38
+ }