@zvec/zvec-grep 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/README.md +88 -249
  2. package/README_CN.md +82 -246
  3. package/dist/authorization/index.d.ts +7 -0
  4. package/dist/authorization/index.js +7 -0
  5. package/dist/authorization/index.js.map +1 -0
  6. package/dist/authorization/manager.d.ts +8 -0
  7. package/dist/authorization/manager.js +19 -0
  8. package/dist/authorization/manager.js.map +1 -0
  9. package/dist/authorization/operation.d.ts +7 -0
  10. package/dist/authorization/operation.js +50 -0
  11. package/dist/authorization/operation.js.map +1 -0
  12. package/dist/authorization/planner.d.ts +21 -0
  13. package/dist/authorization/planner.js +97 -0
  14. package/dist/authorization/planner.js.map +1 -0
  15. package/dist/authorization/prompt.d.ts +11 -0
  16. package/dist/authorization/prompt.js +62 -0
  17. package/dist/authorization/prompt.js.map +1 -0
  18. package/dist/authorization/store.d.ts +20 -0
  19. package/dist/authorization/store.js +251 -0
  20. package/dist/authorization/store.js.map +1 -0
  21. package/dist/authorization/target.d.ts +15 -0
  22. package/dist/authorization/target.js +49 -0
  23. package/dist/authorization/target.js.map +1 -0
  24. package/dist/authorization/types.d.ts +61 -0
  25. package/dist/authorization/types.js +2 -0
  26. package/dist/authorization/types.js.map +1 -0
  27. package/dist/cli/args.d.ts +1 -1
  28. package/dist/cli/args.js +304 -54
  29. package/dist/cli/args.js.map +1 -1
  30. package/dist/cli/auth.d.ts +21 -0
  31. package/dist/cli/auth.js +212 -0
  32. package/dist/cli/auth.js.map +1 -0
  33. package/dist/cli/commands.js +433 -618
  34. package/dist/cli/commands.js.map +1 -1
  35. package/dist/cli/errors.js +2 -2
  36. package/dist/cli/errors.js.map +1 -1
  37. package/dist/cli/format/context.d.ts +1 -0
  38. package/dist/cli/format/context.js +241 -45
  39. package/dist/cli/format/context.js.map +1 -1
  40. package/dist/cli/format/debug.js +2 -2
  41. package/dist/cli/format/debug.js.map +1 -1
  42. package/dist/cli/format/progress.d.ts +4 -0
  43. package/dist/cli/format/progress.js +219 -46
  44. package/dist/cli/format/progress.js.map +1 -1
  45. package/dist/cli/format/status.d.ts +77 -6
  46. package/dist/cli/format/status.js +302 -106
  47. package/dist/cli/format/status.js.map +1 -1
  48. package/dist/cli/help.js +258 -59
  49. package/dist/cli/help.js.map +1 -1
  50. package/dist/cli/index.js +0 -0
  51. package/dist/cli/install.d.ts +4 -0
  52. package/dist/cli/install.js +845 -0
  53. package/dist/cli/install.js.map +1 -0
  54. package/dist/cli/managed-rg.d.ts +10 -0
  55. package/dist/cli/managed-rg.js +329 -0
  56. package/dist/cli/managed-rg.js.map +1 -0
  57. package/dist/cli/types.d.ts +20 -6
  58. package/dist/cli/types.js.map +1 -1
  59. package/dist/client/daemon-client.d.ts +19 -0
  60. package/dist/client/daemon-client.js +180 -0
  61. package/dist/client/daemon-client.js.map +1 -0
  62. package/dist/client/mode-router.d.ts +9 -0
  63. package/dist/client/mode-router.js +28 -0
  64. package/dist/client/mode-router.js.map +1 -0
  65. package/dist/client/search-policy.d.ts +11 -0
  66. package/dist/client/search-policy.js +15 -0
  67. package/dist/client/search-policy.js.map +1 -0
  68. package/dist/daemon/backend.d.ts +76 -0
  69. package/dist/daemon/backend.js +1049 -0
  70. package/dist/daemon/backend.js.map +1 -0
  71. package/dist/daemon/change-set.d.ts +25 -0
  72. package/dist/daemon/change-set.js +101 -0
  73. package/dist/daemon/change-set.js.map +1 -0
  74. package/dist/daemon/config.d.ts +24 -0
  75. package/dist/daemon/config.js +88 -0
  76. package/dist/daemon/config.js.map +1 -0
  77. package/dist/daemon/errors.d.ts +5 -0
  78. package/dist/daemon/errors.js +11 -0
  79. package/dist/daemon/errors.js.map +1 -0
  80. package/dist/daemon/http-server.d.ts +30 -0
  81. package/dist/daemon/http-server.js +287 -0
  82. package/dist/daemon/http-server.js.map +1 -0
  83. package/dist/daemon/index-coordinator.d.ts +23 -0
  84. package/dist/daemon/index-coordinator.js +68 -0
  85. package/dist/daemon/index-coordinator.js.map +1 -0
  86. package/dist/daemon/job-scheduler.d.ts +70 -0
  87. package/dist/daemon/job-scheduler.js +366 -0
  88. package/dist/daemon/job-scheduler.js.map +1 -0
  89. package/dist/daemon/logger.d.ts +9 -0
  90. package/dist/daemon/logger.js +53 -0
  91. package/dist/daemon/logger.js.map +1 -0
  92. package/dist/daemon/model-pool.d.ts +45 -0
  93. package/dist/daemon/model-pool.js +187 -0
  94. package/dist/daemon/model-pool.js.map +1 -0
  95. package/dist/daemon/root-lease.d.ts +14 -0
  96. package/dist/daemon/root-lease.js +188 -0
  97. package/dist/daemon/root-lease.js.map +1 -0
  98. package/dist/daemon/root-runtime.d.ts +78 -0
  99. package/dist/daemon/root-runtime.js +333 -0
  100. package/dist/daemon/root-runtime.js.map +1 -0
  101. package/dist/daemon/runtime-manager.d.ts +45 -0
  102. package/dist/daemon/runtime-manager.js +243 -0
  103. package/dist/daemon/runtime-manager.js.map +1 -0
  104. package/dist/daemon/runtime.d.ts +12 -0
  105. package/dist/daemon/runtime.js +102 -0
  106. package/dist/daemon/runtime.js.map +1 -0
  107. package/dist/daemon/server-controller.d.ts +39 -0
  108. package/dist/daemon/server-controller.js +203 -0
  109. package/dist/daemon/server-controller.js.map +1 -0
  110. package/dist/daemon/watch-manager.d.ts +50 -0
  111. package/dist/daemon/watch-manager.js +293 -0
  112. package/dist/daemon/watch-manager.js.map +1 -0
  113. package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
  114. package/dist/daemon/workspace-read-session-cache.js +115 -0
  115. package/dist/daemon/workspace-read-session-cache.js.map +1 -0
  116. package/dist/engine/config.d.ts +30 -8
  117. package/dist/engine/config.js +171 -45
  118. package/dist/engine/config.js.map +1 -1
  119. package/dist/engine/{errors/index.d.ts → errors.d.ts} +6 -1
  120. package/dist/engine/{errors/details.js → errors.js} +17 -4
  121. package/dist/engine/errors.js.map +1 -0
  122. package/dist/engine/extraction/code/adapter.d.ts +1 -1
  123. package/dist/engine/extraction/code/extractor.d.ts +5 -11
  124. package/dist/engine/extraction/code/extractor.js +105 -44
  125. package/dist/engine/extraction/code/extractor.js.map +1 -1
  126. package/dist/engine/extraction/code/families/c-family.js +1 -1
  127. package/dist/engine/extraction/code/families/c-family.js.map +1 -1
  128. package/dist/engine/extraction/code/families/js-ts.d.ts +1 -1
  129. package/dist/engine/extraction/code/families/metadata.d.ts +1 -1
  130. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
  131. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
  132. package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
  133. package/dist/engine/extraction/image/extractor.d.ts +5 -0
  134. package/dist/engine/extraction/image/extractor.js +35 -0
  135. package/dist/engine/extraction/image/extractor.js.map +1 -0
  136. package/dist/engine/extraction/index.d.ts +3 -44
  137. package/dist/engine/extraction/index.js +1 -280
  138. package/dist/engine/extraction/index.js.map +1 -1
  139. package/dist/engine/extraction/markdown/extractor.d.ts +5 -11
  140. package/dist/engine/extraction/markdown/extractor.js +35 -16
  141. package/dist/engine/extraction/markdown/extractor.js.map +1 -1
  142. package/dist/engine/extraction/runtime.d.ts +4 -0
  143. package/dist/engine/extraction/runtime.js +26 -0
  144. package/dist/engine/extraction/runtime.js.map +1 -0
  145. package/dist/engine/extraction/source.d.ts +18 -0
  146. package/dist/engine/extraction/source.js +22 -0
  147. package/dist/engine/extraction/source.js.map +1 -0
  148. package/dist/engine/extraction/text/extractor.d.ts +7 -0
  149. package/dist/engine/extraction/text/extractor.js +168 -0
  150. package/dist/engine/extraction/text/extractor.js.map +1 -0
  151. package/dist/engine/extraction/types.d.ts +4 -0
  152. package/dist/engine/{models → extraction}/types.js.map +1 -1
  153. package/dist/engine/{files/file-type.d.ts → file-type.d.ts} +1 -1
  154. package/dist/engine/file-type.js.map +1 -0
  155. package/dist/engine/index-status.d.ts +9 -0
  156. package/dist/engine/index-status.js +38 -0
  157. package/dist/engine/index-status.js.map +1 -0
  158. package/dist/engine/manifest.d.ts +12 -0
  159. package/dist/engine/manifest.js +120 -0
  160. package/dist/engine/manifest.js.map +1 -0
  161. package/dist/engine/models/{providers/llama-cpp/embedding.d.ts → backends/llama-cpp.d.ts} +25 -20
  162. package/dist/engine/models/{providers/llama-cpp/embedding.js → backends/llama-cpp.js} +127 -106
  163. package/dist/engine/models/backends/llama-cpp.js.map +1 -0
  164. package/dist/engine/models/backends/model2vec.d.ts +57 -0
  165. package/dist/engine/models/backends/model2vec.js +332 -0
  166. package/dist/engine/models/backends/model2vec.js.map +1 -0
  167. package/dist/engine/models/backends/qwen.d.ts +44 -0
  168. package/dist/engine/models/{providers/qwen/embedding.js → backends/qwen.js} +155 -94
  169. package/dist/engine/models/backends/qwen.js.map +1 -0
  170. package/dist/engine/models/backends/transformers-js.d.ts +87 -0
  171. package/dist/engine/models/backends/transformers-js.js +316 -0
  172. package/dist/engine/models/backends/transformers-js.js.map +1 -0
  173. package/dist/engine/models/catalog.d.ts +188 -23
  174. package/dist/engine/models/catalog.js +172 -25
  175. package/dist/engine/models/catalog.js.map +1 -1
  176. package/dist/engine/models/download-progress.d.ts +15 -0
  177. package/dist/engine/models/download-progress.js +48 -0
  178. package/dist/engine/models/download-progress.js.map +1 -0
  179. package/dist/engine/models/embeddings.d.ts +58 -18
  180. package/dist/engine/models/embeddings.js +52 -28
  181. package/dist/engine/models/embeddings.js.map +1 -1
  182. package/dist/engine/models/factory.d.ts +2 -5
  183. package/dist/engine/models/factory.js +41 -56
  184. package/dist/engine/models/factory.js.map +1 -1
  185. package/dist/engine/models/index.d.ts +4 -6
  186. package/dist/engine/models/index.js +4 -4
  187. package/dist/engine/models/index.js.map +1 -1
  188. package/dist/engine/models/ranking.d.ts +7 -3
  189. package/dist/engine/models/resolution.d.ts +8 -0
  190. package/dist/engine/models/resolution.js +22 -0
  191. package/dist/engine/models/resolution.js.map +1 -0
  192. package/dist/engine/pipeline/indexing/index.d.ts +9 -7
  193. package/dist/engine/pipeline/indexing/index.js +360 -121
  194. package/dist/engine/pipeline/indexing/index.js.map +1 -1
  195. package/dist/engine/pipeline/indexing/root-paths.js +6 -6
  196. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -1
  197. package/dist/engine/pipeline/indexing/scanner/index.d.ts +6 -1
  198. package/dist/engine/pipeline/indexing/scanner/index.js +233 -29
  199. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
  200. package/dist/engine/pipeline/search/index.d.ts +6 -6
  201. package/dist/engine/pipeline/search/index.js +8 -10
  202. package/dist/engine/pipeline/search/index.js.map +1 -1
  203. package/dist/engine/service/index.d.ts +3 -2
  204. package/dist/engine/service/index.js +1 -1
  205. package/dist/engine/service/index.js.map +1 -1
  206. package/dist/engine/service/root.d.ts +13 -12
  207. package/dist/engine/service/root.js +35 -24
  208. package/dist/engine/service/root.js.map +1 -1
  209. package/dist/engine/service/structure-enrichment.js +12 -14
  210. package/dist/engine/service/structure-enrichment.js.map +1 -1
  211. package/dist/engine/service/types.d.ts +32 -37
  212. package/dist/engine/service/workspace-index.d.ts +24 -0
  213. package/dist/engine/service/workspace-index.js +151 -0
  214. package/dist/engine/service/workspace-index.js.map +1 -0
  215. package/dist/engine/service/zvec-grep.d.ts +12 -1
  216. package/dist/engine/service/zvec-grep.js +677 -486
  217. package/dist/engine/service/zvec-grep.js.map +1 -1
  218. package/dist/engine/storage/index.d.ts +8 -4
  219. package/dist/engine/storage/index.js +1 -1
  220. package/dist/engine/storage/index.js.map +1 -1
  221. package/dist/engine/storage/zvec.d.ts +10 -33
  222. package/dist/engine/storage/zvec.js +95 -38
  223. package/dist/engine/storage/zvec.js.map +1 -1
  224. package/dist/engine/types.d.ts +15 -23
  225. package/dist/engine/types.js +1 -1
  226. package/dist/engine/types.js.map +1 -1
  227. package/dist/engine/utils/daemon-lease.d.ts +17 -0
  228. package/dist/engine/utils/daemon-lease.js +175 -0
  229. package/dist/engine/utils/daemon-lease.js.map +1 -0
  230. package/dist/engine/utils/file-selection.js +38 -1
  231. package/dist/engine/utils/file-selection.js.map +1 -1
  232. package/dist/engine/utils/lock.js +1 -1
  233. package/dist/engine/utils/lock.js.map +1 -1
  234. package/dist/index-progress.d.ts +10 -0
  235. package/dist/index-progress.js +159 -0
  236. package/dist/index-progress.js.map +1 -0
  237. package/dist/index.d.ts +4 -4
  238. package/dist/index.js +1 -1
  239. package/dist/index.js.map +1 -1
  240. package/dist/mcp/http-transport.d.ts +27 -0
  241. package/dist/mcp/http-transport.js +182 -0
  242. package/dist/mcp/http-transport.js.map +1 -0
  243. package/dist/mcp/input-normalization.d.ts +38 -0
  244. package/dist/mcp/input-normalization.js +95 -0
  245. package/dist/mcp/input-normalization.js.map +1 -0
  246. package/dist/mcp/progress-heartbeat.d.ts +17 -0
  247. package/dist/mcp/progress-heartbeat.js +46 -0
  248. package/dist/mcp/progress-heartbeat.js.map +1 -0
  249. package/dist/mcp/request-metadata.d.ts +2 -0
  250. package/dist/mcp/request-metadata.js +11 -0
  251. package/dist/mcp/request-metadata.js.map +1 -0
  252. package/dist/mcp/request-state.d.ts +40 -0
  253. package/dist/mcp/request-state.js +210 -0
  254. package/dist/mcp/request-state.js.map +1 -0
  255. package/dist/mcp/result-format.d.ts +13 -0
  256. package/dist/mcp/result-format.js +75 -0
  257. package/dist/mcp/result-format.js.map +1 -0
  258. package/dist/mcp/schemas.d.ts +430 -0
  259. package/dist/mcp/schemas.js +447 -0
  260. package/dist/mcp/schemas.js.map +1 -0
  261. package/dist/mcp/tools.d.ts +150 -0
  262. package/dist/mcp/tools.js +448 -0
  263. package/dist/mcp/tools.js.map +1 -0
  264. package/dist/mcp/toolset.d.ts +5 -0
  265. package/dist/mcp/toolset.js +12 -0
  266. package/dist/mcp/toolset.js.map +1 -0
  267. package/dist/observability/trace-context.d.ts +11 -0
  268. package/dist/observability/trace-context.js +138 -0
  269. package/dist/observability/trace-context.js.map +1 -0
  270. package/docs/01-agents.md +111 -0
  271. package/docs/02-cli.md +229 -0
  272. package/docs/03-mcp.md +167 -0
  273. package/docs/04-pipeline.md +218 -0
  274. package/docs/05-architecture.md +86 -0
  275. package/docs/06-server.md +210 -0
  276. package/docs/07-embedding.md +179 -0
  277. package/docs/08-roadmap.md +85 -0
  278. package/docs/README.md +53 -0
  279. package/package.json +17 -8
  280. package/skills/zvec-grep/SKILL.md +43 -133
  281. package/skills/zvec-grep/agents/openai.yaml +2 -2
  282. package/skills/zvec-grep/references/cli-fallback.md +85 -0
  283. package/dist/cli/mcp.d.ts +0 -2
  284. package/dist/cli/mcp.js +0 -354
  285. package/dist/cli/mcp.js.map +0 -1
  286. package/dist/engine/collection/index.d.ts +0 -55
  287. package/dist/engine/collection/index.js +0 -710
  288. package/dist/engine/collection/index.js.map +0 -1
  289. package/dist/engine/errors/details.d.ts +0 -6
  290. package/dist/engine/errors/details.js.map +0 -1
  291. package/dist/engine/errors/index.js +0 -16
  292. package/dist/engine/errors/index.js.map +0 -1
  293. package/dist/engine/extraction/tree-sitter/grammar.js.map +0 -1
  294. package/dist/engine/extraction/tree-sitter/nodes.js.map +0 -1
  295. package/dist/engine/extraction/tree-sitter/parser.js.map +0 -1
  296. package/dist/engine/files/file-type.js.map +0 -1
  297. package/dist/engine/models/providers/index.d.ts +0 -2
  298. package/dist/engine/models/providers/index.js +0 -3
  299. package/dist/engine/models/providers/index.js.map +0 -1
  300. package/dist/engine/models/providers/llama-cpp/embedding.js.map +0 -1
  301. package/dist/engine/models/providers/llama-cpp/index.d.ts +0 -1
  302. package/dist/engine/models/providers/llama-cpp/index.js +0 -2
  303. package/dist/engine/models/providers/llama-cpp/index.js.map +0 -1
  304. package/dist/engine/models/providers/qwen/embedding.d.ts +0 -42
  305. package/dist/engine/models/providers/qwen/embedding.js.map +0 -1
  306. package/dist/engine/models/providers/qwen/index.d.ts +0 -1
  307. package/dist/engine/models/providers/qwen/index.js +0 -2
  308. package/dist/engine/models/providers/qwen/index.js.map +0 -1
  309. package/dist/engine/models/types.d.ts +0 -30
  310. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.d.ts +0 -0
  311. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.js +0 -0
  312. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.d.ts +0 -0
  313. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.js +0 -0
  314. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.d.ts +0 -0
  315. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.js +0 -0
  316. /package/dist/engine/{models → extraction}/types.js +0 -0
  317. /package/dist/engine/{files/file-type.js → file-type.js} +0 -0
@@ -1,6 +1,6 @@
1
- import type { Content } from "../../../types.js";
2
- import { EmbeddingModel, type EmbeddingOptions, type EmbeddingVector } from "../../embeddings.js";
3
- import type { LlamaCppEmbeddingCatalogEntry, ModelProviderOptions } from "../../types.js";
1
+ import type { Content } from "../../types.js";
2
+ import { BaseEmbeddingModel, type CreateEmbeddingModelOptions, type EmbeddingModelInfo, type EmbeddingResult, type NormalizedEmbeddingOptions } from "../embeddings.js";
3
+ import type { LlamaCppEmbeddingCatalogEntry } from "../catalog.js";
4
4
  type LlamaEmbedding = {
5
5
  vector: ArrayLike<number>;
6
6
  };
@@ -30,35 +30,38 @@ type Llama = {
30
30
  }): Promise<LlamaModel>;
31
31
  dispose?(): Promise<void> | void;
32
32
  };
33
+ type LlamaGpuSelection = Exclude<NonNullable<CreateEmbeddingModelOptions["device"]>, "cpu"> | false;
33
34
  type NodeLlamaCppModule = {
34
35
  getLlama(options: Record<string, unknown>): Promise<Llama>;
35
36
  resolveModelFile(model: string, options: {
36
37
  directory: string;
37
38
  cli?: boolean;
39
+ onProgress?: (status: {
40
+ totalSize: number;
41
+ downloadedSize: number;
42
+ }) => void;
38
43
  }): Promise<string>;
39
44
  LlamaLogLevel?: {
40
45
  error?: unknown;
41
46
  };
42
47
  };
43
48
  type NodeLlamaCppLoader = () => Promise<NodeLlamaCppModule>;
44
- export declare function setLlamaCppRuntimeForTesting(loader: NodeLlamaCppLoader | null): void;
45
- export declare class LlamaCppEmbeddingModel extends EmbeddingModel {
49
+ type LlamaCppRuntimeState = {
50
+ failedGpuInitModes: Set<LlamaGpuSelection>;
51
+ cpuCompatibleFallbackWarningShown: boolean;
52
+ };
53
+ type LlamaCppDependencies = {
54
+ loadRuntime: NodeLlamaCppLoader;
55
+ runtimeState: LlamaCppRuntimeState;
56
+ };
57
+ export declare class LlamaCppEmbeddingModel extends BaseEmbeddingModel {
46
58
  private readonly entry;
47
- readonly ref: {
48
- readonly provider: "local";
49
- readonly model: string;
50
- };
51
- readonly dimension: number;
52
- readonly metric: import("../../types.js").VectorMetric;
53
- readonly supportedContentKinds: readonly ["text"];
54
- readonly limits: {
55
- readonly maxBatchSize: number;
56
- readonly maxInputTokens: number;
57
- };
58
- readonly recommendedIndexConcurrency = 1;
59
+ readonly info: EmbeddingModelInfo;
59
60
  private readonly modelCacheDir;
60
61
  private readonly gpu;
61
- private readonly embeddingParallelism?;
62
+ private readonly parallelism?;
63
+ private readonly dependencies;
64
+ private runtimeImport;
62
65
  private llama;
63
66
  private model;
64
67
  private contexts;
@@ -67,11 +70,13 @@ export declare class LlamaCppEmbeddingModel extends EmbeddingModel {
67
70
  private contextsCreatePromise;
68
71
  private usingCpuFallback;
69
72
  private disposed;
70
- constructor(entry: LlamaCppEmbeddingCatalogEntry, options: ModelProviderOptions);
71
- protected doEmbed(contents: readonly Content[], options: Required<EmbeddingOptions>): Promise<EmbeddingVector[]>;
73
+ constructor(entry: LlamaCppEmbeddingCatalogEntry, options: CreateEmbeddingModelOptions, dependencies?: Partial<LlamaCppDependencies>);
74
+ protected doEmbed(contents: readonly Content[], options: NormalizedEmbeddingOptions): Promise<EmbeddingResult>;
75
+ private embedBatch;
72
76
  dispose(): Promise<void>;
73
77
  private embedTexts;
74
78
  private ensureLlama;
79
+ private loadRuntime;
75
80
  private loadLlamaWithFallback;
76
81
  private loadCpuCompatibleLlama;
77
82
  private ensureModel;
@@ -1,8 +1,9 @@
1
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";
2
+ import { basename, join } from "node:path";
3
+ import { EngineError } from "../../errors.js";
4
+ import { defaultHome } from "../../utils/path.js";
5
+ import { BaseEmbeddingModel, } from "../embeddings.js";
6
+ import { createModelDownloadProgressReporter, } from "../download-progress.js";
6
7
  const DEFAULT_MODEL_CACHE_DIR = join(defaultHome(), "models");
7
8
  const GGUF_MAGIC = Buffer.from("GGUF");
8
9
  const DEFAULT_PARALLELISM_CAP = 8;
@@ -14,10 +15,6 @@ const DEFAULT_DARWIN_ARM64_CMAKE_OPTIONS = {
14
15
  GGML_NATIVE: "OFF",
15
16
  };
16
17
  const SUPPRESSED_LLAMA_CPP_LOG_MESSAGES = new Set(["Failed to get swap info"]);
17
- let nodeLlamaCppImport = null;
18
- let nodeLlamaCppLoader = defaultNodeLlamaCppLoader;
19
- const failedGpuInitModes = new Set();
20
- let cpuCompatibleFallbackWarningShown = false;
21
18
  async function defaultNodeLlamaCppLoader() {
22
19
  const moduleName = "node-llama-cpp";
23
20
  try {
@@ -41,27 +38,25 @@ function installDarwinMetalResidencyMitigation() {
41
38
  }
42
39
  process.env.GGML_METAL_NO_RESIDENCY ??= "1";
43
40
  }
44
- async function loadNodeLlamaCpp() {
45
- nodeLlamaCppImport ??= nodeLlamaCppLoader();
46
- return nodeLlamaCppImport;
47
- }
48
- export function setLlamaCppRuntimeForTesting(loader) {
49
- nodeLlamaCppImport = null;
50
- nodeLlamaCppLoader = loader ?? defaultNodeLlamaCppLoader;
51
- failedGpuInitModes.clear();
52
- cpuCompatibleFallbackWarningShown = false;
53
- }
54
- export class LlamaCppEmbeddingModel extends EmbeddingModel {
41
+ let defaultRuntimeImport = null;
42
+ const defaultDependencies = {
43
+ loadRuntime() {
44
+ defaultRuntimeImport ??= defaultNodeLlamaCppLoader();
45
+ return defaultRuntimeImport;
46
+ },
47
+ runtimeState: {
48
+ failedGpuInitModes: new Set(),
49
+ cpuCompatibleFallbackWarningShown: false,
50
+ },
51
+ };
52
+ export class LlamaCppEmbeddingModel extends BaseEmbeddingModel {
55
53
  entry;
56
- ref;
57
- dimension;
58
- metric;
59
- supportedContentKinds = ["text"];
60
- limits;
61
- recommendedIndexConcurrency = 1;
54
+ info;
62
55
  modelCacheDir;
63
56
  gpu;
64
- embeddingParallelism;
57
+ parallelism;
58
+ dependencies;
59
+ runtimeImport = null;
65
60
  llama = null;
66
61
  model = null;
67
62
  contexts = [];
@@ -70,39 +65,42 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
70
65
  contextsCreatePromise = null;
71
66
  usingCpuFallback = false;
72
67
  disposed = false;
73
- constructor(entry, options) {
68
+ constructor(entry, options, dependencies = {}) {
74
69
  super();
75
70
  this.entry = entry;
76
- this.ref = {
71
+ this.info = {
72
+ reference: entry.reference,
77
73
  provider: entry.provider,
78
- model: entry.model,
79
- };
80
- this.dimension = entry.dimension;
81
- this.metric = entry.metric;
82
- this.limits = {
83
- maxBatchSize: entry.maxBatchSize,
84
- maxInputTokens: entry.contextSize,
74
+ name: entry.model,
75
+ dimension: entry.dimension,
76
+ metric: entry.metric,
77
+ inputKinds: ["text"],
78
+ limits: {
79
+ maxBatchSize: entry.maxBatchSize,
80
+ maxInputTokens: entry.contextSize,
81
+ },
85
82
  };
86
83
  this.modelCacheDir =
87
84
  options.modelCacheDir ??
88
85
  process.env.ZVEC_GREP_MODEL_CACHE ??
89
86
  DEFAULT_MODEL_CACHE_DIR;
90
- this.gpu =
91
- options.llamaGpu ?? resolveLlamaGpuMode(process.env.ZVEC_GREP_LLAMA_GPU);
92
- this.embeddingParallelism =
93
- options.embeddingParallelism ??
94
- resolveParallelismOverride(process.env.ZVEC_GREP_EMBED_PARALLELISM);
87
+ this.gpu = embeddingDeviceToLlamaGpuSelection(options.device ?? "cpu");
88
+ this.parallelism = resolveParallelismOverride(process.env.ZVEC_GREP_LLAMA_CONTEXT_PARALLELISM);
89
+ this.dependencies = { ...defaultDependencies, ...dependencies };
95
90
  }
96
91
  async doEmbed(contents, options) {
92
+ return await this.embedBatch(contents, options);
93
+ }
94
+ async embedBatch(contents, options) {
97
95
  this.ensureNotDisposed();
98
96
  const texts = contents.map((content) => formatTextForEmbedding(content.text, options.purpose, this.entry));
99
97
  try {
100
- return await this.embedTexts(texts);
98
+ return await this.embedTexts(texts, options.onProgress);
101
99
  }
102
100
  catch (cause) {
103
101
  throw new EngineError("llama.cpp embedding failed", {
104
102
  code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_EMBED_FAILED",
105
- context: `model=${this.entry.id}`,
103
+ context: `model=${this.entry.reference}`,
106
104
  cause,
107
105
  });
108
106
  }
@@ -116,34 +114,44 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
116
114
  this.modelLoadPromise = null;
117
115
  this.contextsCreatePromise = null;
118
116
  }
119
- async embedTexts(texts) {
120
- const contexts = await this.ensureEmbeddingContexts(texts.length);
117
+ async embedTexts(texts, onProgress) {
118
+ const contexts = await this.ensureEmbeddingContexts(texts.length, onProgress);
119
+ const truncatedInputIndexes = [];
120
+ const safeTexts = texts.map((text, index) => {
121
+ const result = this.truncateToContextSize(text);
122
+ if (result.truncated) {
123
+ truncatedInputIndexes.push(index);
124
+ }
125
+ return result.text;
126
+ });
121
127
  const chunkSize = Math.ceil(texts.length / contexts.length);
122
128
  const chunks = contexts
123
129
  .map((context, index) => ({
124
130
  context,
125
- texts: texts.slice(index * chunkSize, (index + 1) * chunkSize),
131
+ texts: safeTexts.slice(index * chunkSize, (index + 1) * chunkSize),
126
132
  }))
127
133
  .filter((chunk) => chunk.texts.length > 0);
128
134
  const results = await Promise.all(chunks.map(async (chunk) => {
129
135
  const vectors = [];
130
136
  for (const text of chunk.texts) {
131
- const safeText = this.truncateToContextSize(text);
132
- const embedding = await chunk.context.getEmbeddingFor(safeText);
137
+ const embedding = await chunk.context.getEmbeddingFor(text);
133
138
  vectors.push(Array.from(embedding.vector));
134
139
  }
135
140
  return vectors;
136
141
  }));
137
- return results.flat();
142
+ return {
143
+ vectors: results.flat(),
144
+ truncated: truncatedInputIndexes,
145
+ };
138
146
  }
139
- async ensureLlama() {
147
+ async ensureLlama(downloadProgress) {
140
148
  if (this.llama) {
141
149
  return this.llama;
142
150
  }
143
151
  if (this.llamaLoadPromise) {
144
152
  return await this.llamaLoadPromise;
145
153
  }
146
- this.llamaLoadPromise = this.loadLlamaWithFallback();
154
+ this.llamaLoadPromise = this.loadLlamaWithFallback(downloadProgress);
147
155
  try {
148
156
  return await this.llamaLoadPromise;
149
157
  }
@@ -151,8 +159,12 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
151
159
  this.llamaLoadPromise = null;
152
160
  }
153
161
  }
154
- async loadLlamaWithFallback() {
155
- const runtime = await loadNodeLlamaCpp();
162
+ async loadRuntime() {
163
+ this.runtimeImport ??= this.dependencies.loadRuntime();
164
+ return await this.runtimeImport;
165
+ }
166
+ async loadLlamaWithFallback(downloadProgress) {
167
+ const runtime = await this.loadRuntime();
156
168
  const requestedGpu = this.usingCpuFallback ? false : this.gpu;
157
169
  const load = (gpu) => runtime.getLlama({
158
170
  build: "autoAttempt",
@@ -163,46 +175,46 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
163
175
  progressLogs: false,
164
176
  });
165
177
  if (requestedGpu === false) {
166
- this.llama = await this.loadCpuCompatibleLlama(load);
178
+ this.llama = await this.loadCpuCompatibleLlama(load, downloadProgress);
167
179
  return this.llama;
168
180
  }
169
- if (failedGpuInitModes.has(requestedGpu)) {
170
- process.stderr.write(`zvec-grep warning: skipping previously failed llama.cpp GPU init${requestedGpu === "auto" ? "" : ` for ZVEC_GREP_LLAMA_GPU=${requestedGpu}`}, using CPU.\n`);
181
+ if (this.dependencies.runtimeState.failedGpuInitModes.has(requestedGpu)) {
182
+ reportLlamaWarning(downloadProgress, `skipping previously failed llama.cpp GPU init${requestedGpu === "auto" ? "" : ` for device=${requestedGpu}`}, using CPU.`);
171
183
  this.usingCpuFallback = true;
172
- this.llama = await this.loadCpuCompatibleLlama(load);
184
+ this.llama = await this.loadCpuCompatibleLlama(load, downloadProgress);
173
185
  return this.llama;
174
186
  }
175
187
  try {
176
188
  this.llama = await load(requestedGpu);
177
189
  }
178
190
  catch (error) {
179
- failedGpuInitModes.add(requestedGpu);
180
- process.stderr.write(`zvec-grep warning: llama.cpp GPU init failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
191
+ this.dependencies.runtimeState.failedGpuInitModes.add(requestedGpu);
192
+ reportLlamaWarning(downloadProgress, `llama.cpp GPU init failed (${formatErrorMessage(error)}), falling back to CPU.`);
181
193
  this.usingCpuFallback = true;
182
- this.llama = await this.loadCpuCompatibleLlama(load);
194
+ this.llama = await this.loadCpuCompatibleLlama(load, downloadProgress);
183
195
  }
184
196
  return this.llama;
185
197
  }
186
- async loadCpuCompatibleLlama(load) {
198
+ async loadCpuCompatibleLlama(load, downloadProgress) {
187
199
  try {
188
200
  return await load(false);
189
201
  }
190
202
  catch (error) {
191
- if (!cpuCompatibleFallbackWarningShown) {
192
- cpuCompatibleFallbackWarningShown = true;
193
- process.stderr.write(`zvec-grep warning: CPU-only llama.cpp backend unavailable (${formatErrorMessage(error)}); using packaged backend with GPU model offloading disabled.\n`);
203
+ if (!this.dependencies.runtimeState.cpuCompatibleFallbackWarningShown) {
204
+ this.dependencies.runtimeState.cpuCompatibleFallbackWarningShown = true;
205
+ reportLlamaWarning(downloadProgress, `CPU-only llama.cpp backend unavailable (${formatErrorMessage(error)}); using packaged backend with GPU model offloading disabled.`);
194
206
  }
195
207
  return await load("auto");
196
208
  }
197
209
  }
198
- async ensureModel() {
210
+ async ensureModel(onProgress) {
199
211
  if (this.model) {
200
212
  return this.model;
201
213
  }
202
214
  if (this.modelLoadPromise) {
203
215
  return await this.modelLoadPromise;
204
216
  }
205
- this.modelLoadPromise = this.loadModelWithFallback();
217
+ this.modelLoadPromise = this.loadModelWithFallback(onProgress);
206
218
  try {
207
219
  return await this.modelLoadPromise;
208
220
  }
@@ -210,23 +222,32 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
210
222
  this.modelLoadPromise = null;
211
223
  }
212
224
  }
213
- async loadModelWithFallback() {
225
+ async loadModelWithFallback(onProgress) {
226
+ const downloadProgress = createModelDownloadProgressReporter(this.entry.reference, onProgress, [basename(this.entry.uri)]);
227
+ downloadProgress.start();
214
228
  try {
215
- return await this.loadModel();
229
+ const model = await this.loadModel(downloadProgress);
230
+ downloadProgress.finish();
231
+ return model;
216
232
  }
217
233
  catch (error) {
218
234
  if (!this.canRetryGpuOperationOnCpu()) {
219
235
  throw error;
220
236
  }
221
- process.stderr.write(`zvec-grep warning: llama.cpp GPU model load failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
237
+ const warning = `llama.cpp GPU model load failed (${formatErrorMessage(error)}), falling back to CPU.`;
238
+ if (!downloadProgress.warning(warning)) {
239
+ process.stderr.write(`zvec-grep warning: ${warning}\n`);
240
+ }
222
241
  this.usingCpuFallback = true;
223
242
  await this.disposeLoadedRuntime();
224
- return await this.loadModel();
243
+ const model = await this.loadModel(downloadProgress);
244
+ downloadProgress.finish();
245
+ return model;
225
246
  }
226
247
  }
227
- async loadModel() {
228
- const llama = await this.ensureLlama();
229
- const modelPath = await this.resolveModelPath();
248
+ async loadModel(downloadProgress) {
249
+ const modelPath = await this.resolveModelPath(downloadProgress);
250
+ const llama = await this.ensureLlama(downloadProgress);
230
251
  const model = await llama.loadModel(this.modelLoadOptions(modelPath));
231
252
  this.model = model;
232
253
  return model;
@@ -237,7 +258,7 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
237
258
  ...(this.shouldDisableModelGpuOffload() ? { gpuLayers: 0 } : {}),
238
259
  };
239
260
  }
240
- async ensureEmbeddingContexts(textCount) {
261
+ async ensureEmbeddingContexts(textCount, onProgress) {
241
262
  const targetParallelism = await this.resolveEffectiveParallelism(textCount);
242
263
  if (this.contexts.length >= targetParallelism) {
243
264
  return this.contexts.slice(0, targetParallelism);
@@ -248,8 +269,7 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
248
269
  return this.contexts.slice(0, targetParallelism);
249
270
  }
250
271
  }
251
- this.contextsCreatePromise =
252
- this.createEmbeddingContextsWithFallback(targetParallelism);
272
+ this.contextsCreatePromise = this.createEmbeddingContextsWithFallback(targetParallelism, onProgress);
253
273
  try {
254
274
  await this.contextsCreatePromise;
255
275
  return this.contexts.slice(0, targetParallelism);
@@ -258,9 +278,9 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
258
278
  this.contextsCreatePromise = null;
259
279
  }
260
280
  }
261
- async createEmbeddingContextsWithFallback(targetParallelism) {
281
+ async createEmbeddingContextsWithFallback(targetParallelism, onProgress) {
262
282
  try {
263
- return await this.createEmbeddingContexts(targetParallelism);
283
+ return await this.createEmbeddingContexts(targetParallelism, onProgress);
264
284
  }
265
285
  catch (error) {
266
286
  if (!this.canRetryGpuOperationOnCpu()) {
@@ -269,11 +289,11 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
269
289
  process.stderr.write(`zvec-grep warning: llama.cpp GPU embedding context failed (${formatErrorMessage(error)}), falling back to CPU.\n`);
270
290
  this.usingCpuFallback = true;
271
291
  await this.disposeLoadedRuntime();
272
- return await this.createEmbeddingContexts(targetParallelism);
292
+ return await this.createEmbeddingContexts(targetParallelism, onProgress);
273
293
  }
274
294
  }
275
- async createEmbeddingContexts(targetParallelism) {
276
- const model = await this.ensureModel();
295
+ async createEmbeddingContexts(targetParallelism, onProgress) {
296
+ const model = await this.ensureModel(onProgress);
277
297
  const threads = await this.resolveThreadsPerContext(targetParallelism);
278
298
  const initialContextCount = this.contexts.length;
279
299
  while (this.contexts.length < targetParallelism) {
@@ -318,19 +338,26 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
318
338
  this.modelLoadPromise = null;
319
339
  this.llamaLoadPromise = null;
320
340
  }
321
- async resolveModelPath() {
341
+ async resolveModelPath(downloadProgress) {
322
342
  mkdirSync(this.modelCacheDir, { recursive: true });
323
- const runtime = await loadNodeLlamaCpp();
343
+ const runtime = await this.loadRuntime();
324
344
  const modelPath = await runtime.resolveModelFile(this.entry.uri, {
325
345
  directory: this.modelCacheDir,
326
346
  cli: false,
347
+ onProgress: ({ downloadedSize, totalSize }) => {
348
+ downloadProgress.report({
349
+ artifact: basename(this.entry.uri),
350
+ downloadedBytes: downloadedSize,
351
+ totalBytes: totalSize,
352
+ });
353
+ },
327
354
  });
328
355
  validateGgufFile(modelPath, this.entry.uri);
329
356
  return modelPath;
330
357
  }
331
358
  async resolveParallelism() {
332
- if (this.embeddingParallelism !== undefined) {
333
- return this.embeddingParallelism;
359
+ if (this.parallelism !== undefined) {
360
+ return this.parallelism;
334
361
  }
335
362
  const llama = await this.ensureLlama();
336
363
  if (!this.shouldDisableModelGpuOffload() &&
@@ -365,20 +392,23 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
365
392
  truncateToContextSize(text) {
366
393
  const model = this.model;
367
394
  if (!model?.tokenize || !model.detokenize) {
368
- return text;
395
+ return { text, truncated: false };
369
396
  }
370
397
  const limit = Math.max(1, Math.min(this.entry.contextSize, model.trainContextSize ?? this.entry.contextSize));
371
398
  const tokens = model.tokenize(text);
372
399
  if (tokens.length <= limit) {
373
- return text;
400
+ return { text, truncated: false };
374
401
  }
375
- return model.detokenize(tokens.slice(0, Math.max(1, limit - 4)));
402
+ return {
403
+ text: model.detokenize(tokens.slice(0, Math.max(1, limit - 4))),
404
+ truncated: true,
405
+ };
376
406
  }
377
407
  ensureNotDisposed() {
378
408
  if (this.disposed) {
379
409
  throw new EngineError("llama.cpp embedding model is disposed", {
380
410
  code: "ZVEC_GREP.ENGINE.MODELS.LLAMA_CPP_DISPOSED",
381
- context: `model=${this.entry.id}`,
411
+ context: `model=${this.entry.reference}`,
382
412
  });
383
413
  }
384
414
  }
@@ -386,6 +416,11 @@ export class LlamaCppEmbeddingModel extends EmbeddingModel {
386
416
  function formatErrorMessage(error) {
387
417
  return error instanceof Error ? error.message : String(error);
388
418
  }
419
+ function reportLlamaWarning(downloadProgress, message) {
420
+ if (!downloadProgress?.warning(message)) {
421
+ process.stderr.write(`zvec-grep warning: ${message}\n`);
422
+ }
423
+ }
389
424
  function llamaCppLogger(_level, message) {
390
425
  const trimmed = message.trim();
391
426
  if (SUPPRESSED_LLAMA_CPP_LOG_MESSAGES.has(trimmed)) {
@@ -424,22 +459,8 @@ function formatTextForEmbedding(text, purpose, entry) {
424
459
  ? `task: search result | query: ${text}`
425
460
  : `title: none | text: ${text}`;
426
461
  }
427
- function resolveLlamaGpuMode(envValue) {
428
- const normalized = envValue?.trim().toLowerCase() ?? "";
429
- if (!normalized) {
430
- return false;
431
- }
432
- if (["false", "off", "none", "disable", "disabled", "0"].includes(normalized)) {
433
- return false;
434
- }
435
- if (normalized === "auto" ||
436
- normalized === "metal" ||
437
- normalized === "vulkan" ||
438
- normalized === "cuda") {
439
- return normalized;
440
- }
441
- process.stderr.write(`zvec-grep warning: invalid ZVEC_GREP_LLAMA_GPU="${envValue}", using CPU.\n`);
442
- return false;
462
+ function embeddingDeviceToLlamaGpuSelection(device) {
463
+ return device === "cpu" ? false : device;
443
464
  }
444
465
  function resolveParallelismOverride(envValue) {
445
466
  const normalized = envValue?.trim() ?? "";
@@ -448,7 +469,7 @@ function resolveParallelismOverride(envValue) {
448
469
  }
449
470
  const parsed = Number.parseInt(normalized, 10);
450
471
  if (!Number.isInteger(parsed) || parsed < 1) {
451
- process.stderr.write(`zvec-grep warning: invalid ZVEC_GREP_EMBED_PARALLELISM="${envValue}", using automatic parallelism.\n`);
472
+ process.stderr.write(`zvec-grep warning: invalid ZVEC_GREP_LLAMA_CONTEXT_PARALLELISM="${envValue}", using automatic parallelism.\n`);
452
473
  return undefined;
453
474
  }
454
475
  return Math.min(DEFAULT_PARALLELISM_CAP, parsed);
@@ -487,4 +508,4 @@ function validateGgufFile(filePath, modelUri) {
487
508
  context: `model=${modelUri} path=${filePath} expected=GGUF actual=${got} sizeKB=${sizeKb}`,
488
509
  });
489
510
  }
490
- //# sourceMappingURL=embedding.js.map
511
+ //# sourceMappingURL=llama-cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-cpp.js","sourceRoot":"","sources":["../../../../src/engine/models/backends/llama-cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { Content } from "../../types.js";
2
+ import { BaseEmbeddingModel, type CreateEmbeddingModelOptions, type EmbeddingModelInfo, type EmbeddingResult, type NormalizedEmbeddingOptions } from "../embeddings.js";
3
+ import type { Model2VecEmbeddingCatalogEntry } from "../catalog.js";
4
+ type TokenTensor = {
5
+ data: ArrayLike<number | bigint>;
6
+ };
7
+ type TokenizerOutput = {
8
+ input_ids: TokenTensor;
9
+ };
10
+ type TokenizerLike = {
11
+ (text: string, options: {
12
+ add_special_tokens: false;
13
+ truncation: true;
14
+ max_length: number;
15
+ }): TokenizerOutput | Promise<TokenizerOutput>;
16
+ unk_token_id?: number | null;
17
+ };
18
+ type StaticEmbeddingTable = {
19
+ data: Float32Array | Uint16Array;
20
+ dimension: number;
21
+ dtype: "F16" | "F32";
22
+ rows: number;
23
+ };
24
+ type Model2VecDependencies = {
25
+ loadTokenizer(repo: string, options: {
26
+ cache_dir: string;
27
+ revision: string;
28
+ local_files_only?: boolean;
29
+ }): Promise<TokenizerLike>;
30
+ loadSafetensors(path: string, tensorName: string, dimension: number): Promise<StaticEmbeddingTable>;
31
+ download(url: string, destination: string, onProgress?: (progress: {
32
+ downloadedBytes: number;
33
+ totalBytes?: number;
34
+ }) => void): Promise<void>;
35
+ };
36
+ export declare class Model2VecEmbeddingModel extends BaseEmbeddingModel {
37
+ private readonly entry;
38
+ readonly info: EmbeddingModelInfo;
39
+ private readonly modelCacheDir;
40
+ private readonly dependencies;
41
+ private tokenizer;
42
+ private staticTable;
43
+ private loadPromise;
44
+ private disposed;
45
+ constructor(entry: Model2VecEmbeddingCatalogEntry, options: CreateEmbeddingModelOptions, dependencies?: Partial<Model2VecDependencies>);
46
+ protected doEmbed(contents: readonly Content[], options: NormalizedEmbeddingOptions): Promise<EmbeddingResult>;
47
+ private embedBatch;
48
+ dispose(): Promise<void>;
49
+ private ensureLoaded;
50
+ private loadModel;
51
+ private resolveModelPath;
52
+ private resolveTokenizerSource;
53
+ private resolveCachedFile;
54
+ private embedTexts;
55
+ private ensureNotDisposed;
56
+ }
57
+ export {};