@zvec/zvec-grep 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/README.md +86 -162
  2. package/README_CN.md +80 -162
  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 +3 -0
  28. package/dist/cli/args.js +749 -201
  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.d.ts +3 -1
  34. package/dist/cli/commands.js +529 -180
  35. package/dist/cli/commands.js.map +1 -1
  36. package/dist/cli/errors.js +7 -6
  37. package/dist/cli/errors.js.map +1 -1
  38. package/dist/cli/format/context.d.ts +1 -0
  39. package/dist/cli/format/context.js +270 -70
  40. package/dist/cli/format/context.js.map +1 -1
  41. package/dist/cli/format/debug.js +14 -16
  42. package/dist/cli/format/debug.js.map +1 -1
  43. package/dist/cli/format/highlight.js.map +1 -1
  44. package/dist/cli/format/progress.d.ts +4 -0
  45. package/dist/cli/format/progress.js +222 -44
  46. package/dist/cli/format/progress.js.map +1 -1
  47. package/dist/cli/format/range.js.map +1 -1
  48. package/dist/cli/format/status.d.ts +77 -6
  49. package/dist/cli/format/status.js +343 -114
  50. package/dist/cli/format/status.js.map +1 -1
  51. package/dist/cli/help.d.ts +1 -1
  52. package/dist/cli/help.js +368 -84
  53. package/dist/cli/help.js.map +1 -1
  54. package/dist/cli/index.js +4 -4
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/cli/install.d.ts +4 -0
  57. package/dist/cli/install.js +845 -0
  58. package/dist/cli/install.js.map +1 -0
  59. package/dist/cli/managed-rg.d.ts +10 -0
  60. package/dist/cli/managed-rg.js +329 -0
  61. package/dist/cli/managed-rg.js.map +1 -0
  62. package/dist/cli/types.d.ts +40 -13
  63. package/dist/cli/types.js.map +1 -1
  64. package/dist/cli/version.js +3 -1
  65. package/dist/cli/version.js.map +1 -1
  66. package/dist/client/daemon-client.d.ts +19 -0
  67. package/dist/client/daemon-client.js +180 -0
  68. package/dist/client/daemon-client.js.map +1 -0
  69. package/dist/client/mode-router.d.ts +9 -0
  70. package/dist/client/mode-router.js +28 -0
  71. package/dist/client/mode-router.js.map +1 -0
  72. package/dist/client/search-policy.d.ts +11 -0
  73. package/dist/client/search-policy.js +15 -0
  74. package/dist/client/search-policy.js.map +1 -0
  75. package/dist/daemon/backend.d.ts +76 -0
  76. package/dist/daemon/backend.js +1049 -0
  77. package/dist/daemon/backend.js.map +1 -0
  78. package/dist/daemon/change-set.d.ts +25 -0
  79. package/dist/daemon/change-set.js +101 -0
  80. package/dist/daemon/change-set.js.map +1 -0
  81. package/dist/daemon/config.d.ts +24 -0
  82. package/dist/daemon/config.js +88 -0
  83. package/dist/daemon/config.js.map +1 -0
  84. package/dist/daemon/errors.d.ts +5 -0
  85. package/dist/daemon/errors.js +11 -0
  86. package/dist/daemon/errors.js.map +1 -0
  87. package/dist/daemon/http-server.d.ts +30 -0
  88. package/dist/daemon/http-server.js +287 -0
  89. package/dist/daemon/http-server.js.map +1 -0
  90. package/dist/daemon/index-coordinator.d.ts +23 -0
  91. package/dist/daemon/index-coordinator.js +68 -0
  92. package/dist/daemon/index-coordinator.js.map +1 -0
  93. package/dist/daemon/job-scheduler.d.ts +70 -0
  94. package/dist/daemon/job-scheduler.js +366 -0
  95. package/dist/daemon/job-scheduler.js.map +1 -0
  96. package/dist/daemon/logger.d.ts +9 -0
  97. package/dist/daemon/logger.js +53 -0
  98. package/dist/daemon/logger.js.map +1 -0
  99. package/dist/daemon/model-pool.d.ts +45 -0
  100. package/dist/daemon/model-pool.js +187 -0
  101. package/dist/daemon/model-pool.js.map +1 -0
  102. package/dist/daemon/root-lease.d.ts +14 -0
  103. package/dist/daemon/root-lease.js +188 -0
  104. package/dist/daemon/root-lease.js.map +1 -0
  105. package/dist/daemon/root-runtime.d.ts +78 -0
  106. package/dist/daemon/root-runtime.js +333 -0
  107. package/dist/daemon/root-runtime.js.map +1 -0
  108. package/dist/daemon/runtime-manager.d.ts +45 -0
  109. package/dist/daemon/runtime-manager.js +243 -0
  110. package/dist/daemon/runtime-manager.js.map +1 -0
  111. package/dist/daemon/runtime.d.ts +12 -0
  112. package/dist/daemon/runtime.js +102 -0
  113. package/dist/daemon/runtime.js.map +1 -0
  114. package/dist/daemon/server-controller.d.ts +39 -0
  115. package/dist/daemon/server-controller.js +203 -0
  116. package/dist/daemon/server-controller.js.map +1 -0
  117. package/dist/daemon/watch-manager.d.ts +50 -0
  118. package/dist/daemon/watch-manager.js +293 -0
  119. package/dist/daemon/watch-manager.js.map +1 -0
  120. package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
  121. package/dist/daemon/workspace-read-session-cache.js +115 -0
  122. package/dist/daemon/workspace-read-session-cache.js.map +1 -0
  123. package/dist/engine/config.d.ts +50 -0
  124. package/dist/engine/config.js +321 -0
  125. package/dist/engine/config.js.map +1 -0
  126. package/dist/engine/{errors/index.d.ts → errors.d.ts} +6 -1
  127. package/dist/engine/{errors/details.js → errors.js} +17 -4
  128. package/dist/engine/errors.js.map +1 -0
  129. package/dist/engine/extraction/code/adapter.d.ts +1 -1
  130. package/dist/engine/extraction/code/adapter.js.map +1 -1
  131. package/dist/engine/extraction/code/extractor.d.ts +5 -11
  132. package/dist/engine/extraction/code/extractor.js +184 -109
  133. package/dist/engine/extraction/code/extractor.js.map +1 -1
  134. package/dist/engine/extraction/code/families/c-family.js +13 -7
  135. package/dist/engine/extraction/code/families/c-family.js.map +1 -1
  136. package/dist/engine/extraction/code/families/js-ts.d.ts +1 -1
  137. package/dist/engine/extraction/code/families/js-ts.js +24 -18
  138. package/dist/engine/extraction/code/families/js-ts.js.map +1 -1
  139. package/dist/engine/extraction/code/families/metadata.d.ts +1 -1
  140. package/dist/engine/extraction/code/families/metadata.js +11 -8
  141. package/dist/engine/extraction/code/families/metadata.js.map +1 -1
  142. package/dist/engine/extraction/code/families/name-field.js +5 -5
  143. package/dist/engine/extraction/code/families/name-field.js.map +1 -1
  144. package/dist/engine/extraction/code/languages/c.js +1 -4
  145. package/dist/engine/extraction/code/languages/c.js.map +1 -1
  146. package/dist/engine/extraction/code/languages/cpp.js.map +1 -1
  147. package/dist/engine/extraction/code/languages/go.js +1 -3
  148. package/dist/engine/extraction/code/languages/go.js.map +1 -1
  149. package/dist/engine/extraction/code/languages/java.js.map +1 -1
  150. package/dist/engine/extraction/code/languages/javascript.js +1 -3
  151. package/dist/engine/extraction/code/languages/javascript.js.map +1 -1
  152. package/dist/engine/extraction/code/languages/python.js +5 -6
  153. package/dist/engine/extraction/code/languages/python.js.map +1 -1
  154. package/dist/engine/extraction/code/languages/rust.js +1 -5
  155. package/dist/engine/extraction/code/languages/rust.js.map +1 -1
  156. package/dist/engine/extraction/code/languages/typescript.js.map +1 -1
  157. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
  158. package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.js +2 -1
  159. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
  160. package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
  161. package/dist/engine/extraction/ids.js.map +1 -1
  162. package/dist/engine/extraction/image/extractor.d.ts +5 -0
  163. package/dist/engine/extraction/image/extractor.js +35 -0
  164. package/dist/engine/extraction/image/extractor.js.map +1 -0
  165. package/dist/engine/extraction/index.d.ts +3 -44
  166. package/dist/engine/extraction/index.js +1 -280
  167. package/dist/engine/extraction/index.js.map +1 -1
  168. package/dist/engine/extraction/markdown/extractor.d.ts +5 -11
  169. package/dist/engine/extraction/markdown/extractor.js +37 -16
  170. package/dist/engine/extraction/markdown/extractor.js.map +1 -1
  171. package/dist/engine/extraction/runtime.d.ts +4 -0
  172. package/dist/engine/extraction/runtime.js +26 -0
  173. package/dist/engine/extraction/runtime.js.map +1 -0
  174. package/dist/engine/extraction/source.d.ts +18 -0
  175. package/dist/engine/extraction/source.js +22 -0
  176. package/dist/engine/extraction/source.js.map +1 -0
  177. package/dist/engine/extraction/text/extractor.d.ts +7 -0
  178. package/dist/engine/extraction/text/extractor.js +168 -0
  179. package/dist/engine/extraction/text/extractor.js.map +1 -0
  180. package/dist/engine/extraction/types.d.ts +4 -0
  181. package/dist/engine/{models → extraction}/types.js.map +1 -1
  182. package/dist/engine/{files/file-type.d.ts → file-type.d.ts} +1 -1
  183. package/dist/engine/file-type.js.map +1 -0
  184. package/dist/engine/index-status.d.ts +9 -0
  185. package/dist/engine/index-status.js +38 -0
  186. package/dist/engine/index-status.js.map +1 -0
  187. package/dist/engine/manifest.d.ts +12 -0
  188. package/dist/engine/manifest.js +120 -0
  189. package/dist/engine/manifest.js.map +1 -0
  190. package/dist/engine/models/{providers/llama-cpp/embedding.d.ts → backends/llama-cpp.d.ts} +25 -20
  191. package/dist/engine/models/{providers/llama-cpp/embedding.js → backends/llama-cpp.js} +165 -113
  192. package/dist/engine/models/backends/llama-cpp.js.map +1 -0
  193. package/dist/engine/models/backends/model2vec.d.ts +57 -0
  194. package/dist/engine/models/backends/model2vec.js +332 -0
  195. package/dist/engine/models/backends/model2vec.js.map +1 -0
  196. package/dist/engine/models/backends/qwen.d.ts +44 -0
  197. package/dist/engine/models/{providers/qwen/embedding.js → backends/qwen.js} +168 -102
  198. package/dist/engine/models/backends/qwen.js.map +1 -0
  199. package/dist/engine/models/backends/transformers-js.d.ts +87 -0
  200. package/dist/engine/models/backends/transformers-js.js +316 -0
  201. package/dist/engine/models/backends/transformers-js.js.map +1 -0
  202. package/dist/engine/models/catalog.d.ts +188 -23
  203. package/dist/engine/models/catalog.js +172 -41
  204. package/dist/engine/models/catalog.js.map +1 -1
  205. package/dist/engine/models/download-progress.d.ts +15 -0
  206. package/dist/engine/models/download-progress.js +48 -0
  207. package/dist/engine/models/download-progress.js.map +1 -0
  208. package/dist/engine/models/embeddings.d.ts +58 -18
  209. package/dist/engine/models/embeddings.js +53 -29
  210. package/dist/engine/models/embeddings.js.map +1 -1
  211. package/dist/engine/models/factory.d.ts +2 -5
  212. package/dist/engine/models/factory.js +41 -56
  213. package/dist/engine/models/factory.js.map +1 -1
  214. package/dist/engine/models/index.d.ts +4 -6
  215. package/dist/engine/models/index.js +4 -4
  216. package/dist/engine/models/index.js.map +1 -1
  217. package/dist/engine/models/ranking.d.ts +7 -3
  218. package/dist/engine/models/resolution.d.ts +8 -0
  219. package/dist/engine/models/resolution.js +22 -0
  220. package/dist/engine/models/resolution.js.map +1 -0
  221. package/dist/engine/pipeline/indexing/index.d.ts +9 -7
  222. package/dist/engine/pipeline/indexing/index.js +399 -147
  223. package/dist/engine/pipeline/indexing/index.js.map +1 -1
  224. package/dist/engine/pipeline/indexing/root-paths.js +16 -19
  225. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -1
  226. package/dist/engine/pipeline/indexing/scanner/index.d.ts +6 -1
  227. package/dist/engine/pipeline/indexing/scanner/index.js +318 -66
  228. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
  229. package/dist/engine/pipeline/search/index.d.ts +6 -6
  230. package/dist/engine/pipeline/search/index.js +76 -34
  231. package/dist/engine/pipeline/search/index.js.map +1 -1
  232. package/dist/engine/service/index.d.ts +3 -2
  233. package/dist/engine/service/index.js +1 -1
  234. package/dist/engine/service/index.js.map +1 -1
  235. package/dist/engine/service/lexical.d.ts +14 -15
  236. package/dist/engine/service/lexical.js +78 -119
  237. package/dist/engine/service/lexical.js.map +1 -1
  238. package/dist/engine/service/root.d.ts +13 -12
  239. package/dist/engine/service/root.js +35 -24
  240. package/dist/engine/service/root.js.map +1 -1
  241. package/dist/engine/service/structure-enrichment.js +29 -25
  242. package/dist/engine/service/structure-enrichment.js.map +1 -1
  243. package/dist/engine/service/types.d.ts +61 -35
  244. package/dist/engine/service/workspace-index.d.ts +24 -0
  245. package/dist/engine/service/workspace-index.js +151 -0
  246. package/dist/engine/service/workspace-index.js.map +1 -0
  247. package/dist/engine/service/zvec-grep.d.ts +12 -1
  248. package/dist/engine/service/zvec-grep.js +878 -544
  249. package/dist/engine/service/zvec-grep.js.map +1 -1
  250. package/dist/engine/storage/index.d.ts +8 -4
  251. package/dist/engine/storage/index.js +1 -1
  252. package/dist/engine/storage/index.js.map +1 -1
  253. package/dist/engine/storage/zvec.d.ts +10 -33
  254. package/dist/engine/storage/zvec.js +110 -49
  255. package/dist/engine/storage/zvec.js.map +1 -1
  256. package/dist/engine/types.d.ts +29 -23
  257. package/dist/engine/types.js +1 -1
  258. package/dist/engine/types.js.map +1 -1
  259. package/dist/engine/utils/daemon-lease.d.ts +17 -0
  260. package/dist/engine/utils/daemon-lease.js +175 -0
  261. package/dist/engine/utils/daemon-lease.js.map +1 -0
  262. package/dist/engine/utils/file-selection.d.ts +10 -0
  263. package/dist/engine/utils/file-selection.js +157 -0
  264. package/dist/engine/utils/file-selection.js.map +1 -0
  265. package/dist/engine/utils/glob.d.ts +3 -0
  266. package/dist/engine/utils/glob.js +116 -18
  267. package/dist/engine/utils/glob.js.map +1 -1
  268. package/dist/engine/utils/hash.js.map +1 -1
  269. package/dist/engine/utils/json.d.ts +6 -2
  270. package/dist/engine/utils/json.js +50 -12
  271. package/dist/engine/utils/json.js.map +1 -1
  272. package/dist/engine/utils/lock.js +7 -7
  273. package/dist/engine/utils/lock.js.map +1 -1
  274. package/dist/engine/utils/path.js +2 -2
  275. package/dist/engine/utils/path.js.map +1 -1
  276. package/dist/engine/utils/timing.js.map +1 -1
  277. package/dist/index-progress.d.ts +10 -0
  278. package/dist/index-progress.js +159 -0
  279. package/dist/index-progress.js.map +1 -0
  280. package/dist/index.d.ts +6 -6
  281. package/dist/index.js +3 -3
  282. package/dist/index.js.map +1 -1
  283. package/dist/mcp/http-transport.d.ts +27 -0
  284. package/dist/mcp/http-transport.js +182 -0
  285. package/dist/mcp/http-transport.js.map +1 -0
  286. package/dist/mcp/input-normalization.d.ts +38 -0
  287. package/dist/mcp/input-normalization.js +95 -0
  288. package/dist/mcp/input-normalization.js.map +1 -0
  289. package/dist/mcp/progress-heartbeat.d.ts +17 -0
  290. package/dist/mcp/progress-heartbeat.js +46 -0
  291. package/dist/mcp/progress-heartbeat.js.map +1 -0
  292. package/dist/mcp/request-metadata.d.ts +2 -0
  293. package/dist/mcp/request-metadata.js +11 -0
  294. package/dist/mcp/request-metadata.js.map +1 -0
  295. package/dist/mcp/request-state.d.ts +40 -0
  296. package/dist/mcp/request-state.js +210 -0
  297. package/dist/mcp/request-state.js.map +1 -0
  298. package/dist/mcp/result-format.d.ts +13 -0
  299. package/dist/mcp/result-format.js +75 -0
  300. package/dist/mcp/result-format.js.map +1 -0
  301. package/dist/mcp/schemas.d.ts +430 -0
  302. package/dist/mcp/schemas.js +447 -0
  303. package/dist/mcp/schemas.js.map +1 -0
  304. package/dist/mcp/tools.d.ts +150 -0
  305. package/dist/mcp/tools.js +448 -0
  306. package/dist/mcp/tools.js.map +1 -0
  307. package/dist/mcp/toolset.d.ts +5 -0
  308. package/dist/mcp/toolset.js +12 -0
  309. package/dist/mcp/toolset.js.map +1 -0
  310. package/dist/observability/trace-context.d.ts +11 -0
  311. package/dist/observability/trace-context.js +138 -0
  312. package/dist/observability/trace-context.js.map +1 -0
  313. package/docs/01-agents.md +111 -0
  314. package/docs/02-cli.md +229 -0
  315. package/docs/03-mcp.md +167 -0
  316. package/docs/04-pipeline.md +218 -0
  317. package/docs/05-architecture.md +86 -0
  318. package/docs/06-server.md +210 -0
  319. package/docs/07-embedding.md +179 -0
  320. package/docs/08-roadmap.md +85 -0
  321. package/docs/README.md +53 -0
  322. package/package.json +43 -7
  323. package/skills/zvec-grep/SKILL.md +43 -123
  324. package/skills/zvec-grep/agents/openai.yaml +2 -2
  325. package/skills/zvec-grep/references/cli-fallback.md +85 -0
  326. package/dist/engine/collection/index.d.ts +0 -55
  327. package/dist/engine/collection/index.js +0 -710
  328. package/dist/engine/collection/index.js.map +0 -1
  329. package/dist/engine/errors/details.d.ts +0 -6
  330. package/dist/engine/errors/details.js.map +0 -1
  331. package/dist/engine/errors/index.js +0 -16
  332. package/dist/engine/errors/index.js.map +0 -1
  333. package/dist/engine/extraction/tree-sitter/grammar.js.map +0 -1
  334. package/dist/engine/extraction/tree-sitter/nodes.js.map +0 -1
  335. package/dist/engine/extraction/tree-sitter/parser.js.map +0 -1
  336. package/dist/engine/files/file-type.js.map +0 -1
  337. package/dist/engine/models/providers/index.d.ts +0 -2
  338. package/dist/engine/models/providers/index.js +0 -3
  339. package/dist/engine/models/providers/index.js.map +0 -1
  340. package/dist/engine/models/providers/llama-cpp/embedding.js.map +0 -1
  341. package/dist/engine/models/providers/llama-cpp/index.d.ts +0 -1
  342. package/dist/engine/models/providers/llama-cpp/index.js +0 -2
  343. package/dist/engine/models/providers/llama-cpp/index.js.map +0 -1
  344. package/dist/engine/models/providers/qwen/embedding.d.ts +0 -42
  345. package/dist/engine/models/providers/qwen/embedding.js.map +0 -1
  346. package/dist/engine/models/providers/qwen/index.d.ts +0 -1
  347. package/dist/engine/models/providers/qwen/index.js +0 -2
  348. package/dist/engine/models/providers/qwen/index.js.map +0 -1
  349. package/dist/engine/models/types.d.ts +0 -30
  350. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.d.ts +0 -0
  351. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.js +0 -0
  352. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.d.ts +0 -0
  353. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.d.ts +0 -0
  354. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.js +0 -0
  355. /package/dist/engine/{models → extraction}/types.js +0 -0
  356. /package/dist/engine/{files/file-type.js → file-type.js} +0 -0
@@ -1,65 +1,94 @@
1
- import { EngineError } from "../../../errors/index.js";
2
- import { EmbeddingModel, } from "../../embeddings.js";
1
+ import { globalConfigPath } from "../../config.js";
2
+ import { EngineError } from "../../errors.js";
3
+ import { BaseEmbeddingModel, } from "../embeddings.js";
4
+ import { traceHeaders } from "../../../observability/trace-context.js";
3
5
  // -----------------------------------------------------------------------------
4
- // text-embedding-v4
6
+ // Text embedding models (OpenAI-compatible API)
5
7
  // -----------------------------------------------------------------------------
6
- const DEFAULT_QWEN_TEXT_EMBEDDING_V4_ENDPOINT = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings";
7
- export class QwenTextEmbeddingV4Model extends EmbeddingModel {
8
- ref = {
9
- provider: "qwen",
10
- model: "text-embedding-v4",
11
- };
12
- dimension = 1024;
13
- metric = "cosine";
14
- supportedContentKinds = ["text"];
15
- limits = {
16
- maxBatchSize: 10,
17
- maxInputTokens: 8192,
18
- };
19
- recommendedIndexConcurrency = 8;
20
- maxIndexConcurrency = 12;
8
+ const DEFAULT_REMOTE_EMBEDDING_TIMEOUT_MS = 60_000;
9
+ const defaultDependencies = {
10
+ fetch: (...args) => globalThis.fetch(...args),
11
+ };
12
+ const QWEN_TEXT_EMBEDDING_V4_SPEC = {
13
+ displayName: "Qwen text-embedding-v4",
14
+ errorCodePrefix: "QWEN_TEXT_EMBEDDING_V4",
15
+ };
16
+ const QWEN37_TEXT_EMBEDDING_SPEC = {
17
+ displayName: "Qwen3.7 text embedding",
18
+ errorCodePrefix: "QWEN37_TEXT_EMBEDDING",
19
+ };
20
+ class QwenTextEmbeddingModel extends BaseEmbeddingModel {
21
+ info;
22
+ entry;
21
23
  apiKey;
22
24
  endpoint;
23
- constructor(options) {
25
+ displayName;
26
+ errorCodePrefix;
27
+ dependencies;
28
+ constructor(entry, spec, options, dependencies) {
24
29
  super();
25
- if (options.apiKey.trim().length === 0) {
26
- throw new EngineError("Qwen text-embedding-v4 model requires an API key", {
27
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_API_KEY",
28
- context: `model=${this.ref.model}`,
30
+ this.entry = entry;
31
+ const endpoint = options.endpoint === undefined
32
+ ? entry.defaultEndpoint
33
+ : options.endpoint.trim();
34
+ this.info = {
35
+ reference: entry.reference,
36
+ provider: entry.provider,
37
+ name: entry.model,
38
+ dimension: entry.dimension,
39
+ metric: entry.metric,
40
+ endpoint,
41
+ inputKinds: ["text"],
42
+ limits: {
43
+ maxBatchSize: entry.maxBatchSize,
44
+ maxInputTokens: entry.maxInputTokens,
45
+ },
46
+ };
47
+ this.displayName = spec.displayName;
48
+ this.errorCodePrefix = spec.errorCodePrefix;
49
+ this.dependencies = { ...defaultDependencies, ...dependencies };
50
+ const apiKey = options.apiKey?.trim() ?? "";
51
+ if (apiKey.length === 0) {
52
+ throw new EngineError(`${this.displayName} model requires an API key`, {
53
+ code: this.errorCode("MISSING_API_KEY"),
54
+ context: `model=${this.info.reference}\nhint=Pass --api-key, set ZVEC_GREP_API_KEY, or configure providers.qwen.apiKey in ${globalConfigPath()}.`,
29
55
  });
30
56
  }
31
- const endpoint = normalizeEndpoint(options.endpoint ?? DEFAULT_QWEN_TEXT_EMBEDDING_V4_ENDPOINT);
32
57
  if (endpoint.length === 0) {
33
- throw new EngineError("Qwen text-embedding-v4 model requires an endpoint", {
34
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_ENDPOINT",
35
- context: `model=${this.ref.model}`,
58
+ throw new EngineError(`${this.displayName} model requires an endpoint`, {
59
+ code: this.errorCode("MISSING_ENDPOINT"),
60
+ context: `model=${this.info.reference}`,
36
61
  });
37
62
  }
38
- this.apiKey = options.apiKey;
63
+ this.apiKey = apiKey;
39
64
  this.endpoint = endpoint;
40
65
  }
41
- async doEmbed(contents, _options) {
66
+ async doEmbed(contents, options) {
42
67
  const texts = contents.map((content) => content.text);
43
68
  let response;
69
+ const signal = remoteEmbeddingSignal(options.signal);
44
70
  try {
45
- response = await fetch(this.endpoint, {
71
+ response = await this.dependencies.fetch(this.endpoint, {
46
72
  method: "POST",
47
73
  headers: {
74
+ ...traceHeaders(),
48
75
  Authorization: `Bearer ${this.apiKey}`,
49
76
  "Content-Type": "application/json",
50
77
  },
51
78
  body: JSON.stringify({
52
- model: this.ref.model,
79
+ model: this.entry.model,
53
80
  input: texts,
54
- dimensions: this.dimension,
81
+ dimensions: this.info.dimension,
55
82
  encoding_format: "float",
56
83
  }),
84
+ signal,
57
85
  });
58
86
  }
59
87
  catch (cause) {
60
- throw new EngineError("Qwen text-embedding-v4 request failed", {
61
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_REQUEST_FAILED",
62
- context: `model=${this.ref.model} endpoint=${this.endpoint}`,
88
+ throwIfEmbeddingCancelled(options.signal);
89
+ throw new EngineError(`${this.displayName} request failed`, {
90
+ code: this.errorCode("REQUEST_FAILED"),
91
+ context: `model=${this.info.reference} endpoint=${this.endpoint} timeoutMs=${DEFAULT_REMOTE_EMBEDDING_TIMEOUT_MS}`,
63
92
  cause,
64
93
  });
65
94
  }
@@ -68,97 +97,119 @@ export class QwenTextEmbeddingV4Model extends EmbeddingModel {
68
97
  body = await response.json();
69
98
  }
70
99
  catch (cause) {
71
- throw new EngineError("Qwen text-embedding-v4 response was not valid JSON", {
72
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_JSON",
73
- context: `model=${this.ref.model} status=${response.status}`,
100
+ throw new EngineError(`${this.displayName} response was not valid JSON`, {
101
+ code: this.errorCode("INVALID_JSON"),
102
+ context: `model=${this.info.reference} status=${response.status}`,
74
103
  cause,
75
104
  });
76
105
  }
77
106
  if (!response.ok) {
78
107
  const error = readProviderError(body);
79
- throw new EngineError("Qwen text-embedding-v4 request returned an error", {
80
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_API_ERROR",
81
- context: providerErrorContext(this.ref.model, response, error),
108
+ throw new EngineError(`${this.displayName} request returned an error`, {
109
+ code: this.errorCode("API_ERROR"),
110
+ context: providerErrorContext(this.entry.model, response, error),
82
111
  });
83
112
  }
84
113
  if (!isRecord(body) || !Array.isArray(body.data)) {
85
- throw new EngineError("Qwen text-embedding-v4 response did not include data", {
86
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_DATA",
87
- context: `model=${this.ref.model}`,
114
+ throw new EngineError(`${this.displayName} response did not include data`, {
115
+ code: this.errorCode("MISSING_DATA"),
116
+ context: `model=${this.info.reference}`,
88
117
  });
89
118
  }
90
119
  const vectors = new Array(texts.length);
91
120
  for (const item of body.data) {
92
- if (!isRecord(item) || typeof item.index !== "number" || !Number.isInteger(item.index)) {
93
- throw new EngineError("Qwen text-embedding-v4 response included an invalid index", {
94
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_INDEX",
95
- context: `model=${this.ref.model} index=${isRecord(item) ? String(item.index) : "unknown"}`,
121
+ if (!isRecord(item) ||
122
+ typeof item.index !== "number" ||
123
+ !Number.isInteger(item.index)) {
124
+ throw new EngineError(`${this.displayName} response included an invalid index`, {
125
+ code: this.errorCode("INVALID_INDEX"),
126
+ context: `model=${this.info.reference} index=${isRecord(item) ? String(item.index) : "unknown"}`,
96
127
  });
97
128
  }
98
129
  if (item.index < 0 || item.index >= texts.length) {
99
- throw new EngineError("Qwen text-embedding-v4 response index was out of range", {
100
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INDEX_OUT_OF_RANGE",
101
- context: `model=${this.ref.model} index=${item.index} inputCount=${texts.length}`,
130
+ throw new EngineError(`${this.displayName} response index was out of range`, {
131
+ code: this.errorCode("INDEX_OUT_OF_RANGE"),
132
+ context: `model=${this.info.reference} index=${item.index} inputCount=${texts.length}`,
102
133
  });
103
134
  }
104
135
  if (!Array.isArray(item.embedding)) {
105
- throw new EngineError("Qwen text-embedding-v4 response included an invalid embedding", {
106
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_VECTOR",
107
- context: `model=${this.ref.model} index=${item.index}`,
136
+ throw new EngineError(`${this.displayName} response included an invalid embedding`, {
137
+ code: this.errorCode("INVALID_VECTOR"),
138
+ context: `model=${this.info.reference} index=${item.index}`,
108
139
  });
109
140
  }
110
141
  vectors[item.index] = item.embedding;
111
142
  }
112
- return vectors;
143
+ return { vectors, truncated: [] };
144
+ }
145
+ errorCode(suffix) {
146
+ return `ZVEC_GREP.ENGINE.MODELS.${this.errorCodePrefix}_${suffix}`;
147
+ }
148
+ }
149
+ export class QwenTextEmbeddingV4Model extends QwenTextEmbeddingModel {
150
+ constructor(entry, options, dependencies = {}) {
151
+ super(entry, QWEN_TEXT_EMBEDDING_V4_SPEC, options, dependencies);
152
+ }
153
+ }
154
+ export class Qwen37TextEmbeddingModel extends QwenTextEmbeddingModel {
155
+ constructor(entry, options, dependencies = {}) {
156
+ super(entry, QWEN37_TEXT_EMBEDDING_SPEC, options, dependencies);
113
157
  }
114
158
  }
115
159
  // -----------------------------------------------------------------------------
116
160
  // qwen3-vl-embedding
117
161
  // -----------------------------------------------------------------------------
118
- const DEFAULT_QWEN3_VL_EMBEDDING_ENDPOINT = "https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding";
119
162
  const QWEN3_VL_EMBEDDING_MAX_IMAGE_COUNT = 10;
120
163
  const QWEN3_VL_EMBEDDING_SUPPORTED_IMAGE_FORMATS = [
121
164
  "jpeg",
122
165
  "png",
123
166
  "webp",
124
167
  ];
125
- export class Qwen3VlEmbeddingModel extends EmbeddingModel {
126
- ref = {
127
- provider: "qwen",
128
- model: "qwen3-vl-embedding",
129
- };
130
- dimension = 2560;
131
- metric = "cosine";
132
- supportedContentKinds = ["text", "image"];
133
- limits = {
134
- maxBatchSize: 20,
135
- maxInputTokens: 32000,
136
- maxImageBytes: 10 * 1024 * 1024,
137
- };
138
- recommendedIndexConcurrency = 4;
139
- maxIndexConcurrency = 8;
168
+ export class Qwen3VlEmbeddingModel extends BaseEmbeddingModel {
169
+ info;
170
+ entry;
140
171
  apiKey;
141
172
  endpoint;
142
- constructor(options) {
173
+ dependencies;
174
+ constructor(entry, options, dependencies = {}) {
143
175
  super();
144
- if (options.apiKey.trim().length === 0) {
176
+ this.entry = entry;
177
+ this.dependencies = { ...defaultDependencies, ...dependencies };
178
+ const endpoint = options.endpoint === undefined
179
+ ? entry.defaultEndpoint
180
+ : options.endpoint.trim();
181
+ this.info = {
182
+ reference: entry.reference,
183
+ provider: entry.provider,
184
+ name: entry.model,
185
+ dimension: entry.dimension,
186
+ metric: entry.metric,
187
+ endpoint,
188
+ inputKinds: ["text", "image"],
189
+ limits: {
190
+ maxBatchSize: entry.maxBatchSize,
191
+ maxInputTokens: entry.maxInputTokens,
192
+ maxImageBytes: entry.maxImageBytes,
193
+ },
194
+ };
195
+ const apiKey = options.apiKey?.trim() ?? "";
196
+ if (apiKey.length === 0) {
145
197
  throw new EngineError("Qwen3 VL embedding model requires an API key", {
146
198
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_API_KEY",
147
- context: `model=${this.ref.model}`,
199
+ context: `model=${this.info.reference}\nhint=Pass --api-key, set ZVEC_GREP_API_KEY, or configure providers.qwen.apiKey in ${globalConfigPath()}.`,
148
200
  });
149
201
  }
150
- const endpoint = normalizeEndpoint(options.endpoint ?? DEFAULT_QWEN3_VL_EMBEDDING_ENDPOINT);
151
202
  if (endpoint.length === 0) {
152
203
  throw new EngineError("Qwen3 VL embedding model requires an endpoint", {
153
204
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_ENDPOINT",
154
- context: `model=${this.ref.model}`,
205
+ context: `model=${this.info.reference}`,
155
206
  });
156
207
  }
157
- this.apiKey = options.apiKey;
208
+ this.apiKey = apiKey;
158
209
  this.endpoint = endpoint;
159
210
  }
160
- async doEmbed(contents, _options) {
161
- validateQwen3VlContents(this.ref.model, contents);
211
+ async doEmbed(contents, options) {
212
+ validateQwen3VlContents(this.entry.model, contents);
162
213
  const requestContents = contents.map((content) => {
163
214
  if (content.kind === "text") {
164
215
  return {
@@ -170,28 +221,32 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
170
221
  };
171
222
  });
172
223
  let response;
224
+ const signal = remoteEmbeddingSignal(options.signal);
173
225
  try {
174
- response = await fetch(this.endpoint, {
226
+ response = await this.dependencies.fetch(this.endpoint, {
175
227
  method: "POST",
176
228
  headers: {
229
+ ...traceHeaders(),
177
230
  Authorization: `Bearer ${this.apiKey}`,
178
231
  "Content-Type": "application/json",
179
232
  },
180
233
  body: JSON.stringify({
181
- model: this.ref.model,
234
+ model: this.entry.model,
182
235
  input: {
183
236
  contents: requestContents,
184
237
  },
185
238
  parameters: {
186
- dimension: this.dimension,
239
+ dimension: this.info.dimension,
187
240
  },
188
241
  }),
242
+ signal,
189
243
  });
190
244
  }
191
245
  catch (cause) {
246
+ throwIfEmbeddingCancelled(options.signal);
192
247
  throw new EngineError("Qwen3 VL embedding request failed", {
193
248
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_REQUEST_FAILED",
194
- context: `model=${this.ref.model} endpoint=${this.endpoint}`,
249
+ context: `model=${this.info.reference} endpoint=${this.endpoint} timeoutMs=${DEFAULT_REMOTE_EMBEDDING_TIMEOUT_MS}`,
195
250
  cause,
196
251
  });
197
252
  }
@@ -202,7 +257,7 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
202
257
  catch (cause) {
203
258
  throw new EngineError("Qwen3 VL embedding response was not valid JSON", {
204
259
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_JSON",
205
- context: `model=${this.ref.model} status=${response.status}`,
260
+ context: `model=${this.info.reference} status=${response.status}`,
206
261
  cause,
207
262
  });
208
263
  }
@@ -210,13 +265,15 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
210
265
  const error = readProviderError(body);
211
266
  throw new EngineError("Qwen3 VL embedding request returned an error", {
212
267
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_API_ERROR",
213
- context: providerErrorContext(this.ref.model, response, error),
268
+ context: providerErrorContext(this.entry.model, response, error),
214
269
  });
215
270
  }
216
- if (!isRecord(body) || !isRecord(body.output) || !Array.isArray(body.output.embeddings)) {
271
+ if (!isRecord(body) ||
272
+ !isRecord(body.output) ||
273
+ !Array.isArray(body.output.embeddings)) {
217
274
  throw new EngineError("Qwen3 VL embedding response did not include embeddings", {
218
275
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_EMBEDDINGS",
219
- context: `model=${this.ref.model}`,
276
+ context: `model=${this.info.reference}`,
220
277
  });
221
278
  }
222
279
  const vectors = new Array(contents.length);
@@ -224,34 +281,31 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
224
281
  if (!isRecord(item)) {
225
282
  throw new EngineError("Qwen3 VL embedding response included an invalid embedding item", {
226
283
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_ITEM",
227
- context: `model=${this.ref.model} index=${fallbackIndex}`,
284
+ context: `model=${this.info.reference} index=${fallbackIndex}`,
228
285
  });
229
286
  }
230
287
  const index = readEmbeddingIndex(item, fallbackIndex);
231
288
  if (index < 0 || index >= contents.length) {
232
289
  throw new EngineError("Qwen3 VL embedding response index was out of range", {
233
290
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INDEX_OUT_OF_RANGE",
234
- context: `model=${this.ref.model} index=${index} inputCount=${contents.length}`,
291
+ context: `model=${this.info.reference} index=${index} inputCount=${contents.length}`,
235
292
  });
236
293
  }
237
294
  if (!Array.isArray(item.embedding)) {
238
295
  throw new EngineError("Qwen3 VL embedding response included an invalid embedding", {
239
296
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_VECTOR",
240
- context: `model=${this.ref.model} index=${index}`,
297
+ context: `model=${this.info.reference} index=${index}`,
241
298
  });
242
299
  }
243
300
  vectors[index] = item.embedding;
244
301
  }
245
- return vectors;
302
+ return { vectors, truncated: [] };
246
303
  }
247
304
  }
248
305
  // -----------------------------------------------------------------------------
249
306
  // Shared helpers
250
307
  // -----------------------------------------------------------------------------
251
308
  const BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
252
- function normalizeEndpoint(endpoint) {
253
- return endpoint.trim();
254
- }
255
309
  function providerErrorContext(model, response, error) {
256
310
  const retryAfter = retryAfterHeaderMs(response.headers.get("retry-after"));
257
311
  const retryAfterDetail = typeof retryAfter === "number" ? ` retryAfterMs=${retryAfter}` : "";
@@ -296,7 +350,8 @@ function readEmbeddingIndex(item, fallbackIndex) {
296
350
  if (typeof item.index === "number" && Number.isInteger(item.index)) {
297
351
  return item.index;
298
352
  }
299
- if (typeof item.text_index === "number" && Number.isInteger(item.text_index)) {
353
+ if (typeof item.text_index === "number" &&
354
+ Number.isInteger(item.text_index)) {
300
355
  return item.text_index;
301
356
  }
302
357
  return fallbackIndex;
@@ -333,13 +388,24 @@ function bytesToBase64(bytes) {
333
388
  const third = bytes[index + 2];
334
389
  output += BASE64_CHARS.charAt(first >> 2);
335
390
  output += BASE64_CHARS.charAt(((first & 3) << 4) | ((second ?? 0) >> 4));
336
- output += second === undefined
337
- ? "="
338
- : BASE64_CHARS.charAt(((second & 15) << 2) | ((third ?? 0) >> 6));
339
- output += third === undefined
340
- ? "="
341
- : BASE64_CHARS.charAt(third & 63);
391
+ output +=
392
+ second === undefined
393
+ ? "="
394
+ : BASE64_CHARS.charAt(((second & 15) << 2) | ((third ?? 0) >> 6));
395
+ output += third === undefined ? "=" : BASE64_CHARS.charAt(third & 63);
342
396
  }
343
397
  return output;
344
398
  }
345
- //# sourceMappingURL=embedding.js.map
399
+ function remoteEmbeddingSignal(signal) {
400
+ const timeout = AbortSignal.timeout(DEFAULT_REMOTE_EMBEDDING_TIMEOUT_MS);
401
+ return signal ? AbortSignal.any([signal, timeout]) : timeout;
402
+ }
403
+ function throwIfEmbeddingCancelled(signal) {
404
+ if (!signal?.aborted) {
405
+ return;
406
+ }
407
+ throw signal.reason instanceof Error
408
+ ? signal.reason
409
+ : new Error("Embedding request was cancelled.");
410
+ }
411
+ //# sourceMappingURL=qwen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../../src/engine/models/backends/qwen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { Content } from "../../types.js";
2
+ import { BaseEmbeddingModel, type CreateEmbeddingModelOptions, type EmbeddingModelInfo, type EmbeddingResult, type NormalizedEmbeddingOptions } from "../embeddings.js";
3
+ import type { TransformersJsEmbeddingCatalogEntry } from "../catalog.js";
4
+ type TensorLike = {
5
+ data: ArrayLike<number>;
6
+ dims: readonly number[];
7
+ };
8
+ type TokenizerLike = {
9
+ (text: string | string[], options: {
10
+ truncation: true;
11
+ max_length: number;
12
+ padding: true;
13
+ }): {
14
+ input_ids: {
15
+ data: ArrayLike<number | bigint>;
16
+ dims: readonly number[];
17
+ };
18
+ attention_mask: {
19
+ data: ArrayLike<number | bigint>;
20
+ dims: readonly number[];
21
+ };
22
+ } | Promise<{
23
+ input_ids: {
24
+ data: ArrayLike<number | bigint>;
25
+ dims: readonly number[];
26
+ };
27
+ attention_mask: {
28
+ data: ArrayLike<number | bigint>;
29
+ dims: readonly number[];
30
+ };
31
+ }>;
32
+ model_max_length: number;
33
+ };
34
+ type FeatureExtractionPipeline = {
35
+ (texts: string[], options: {
36
+ pooling: "mean" | "cls";
37
+ normalize: boolean;
38
+ truncation: true;
39
+ max_length: number;
40
+ }): Promise<TensorLike>;
41
+ tokenizer: TokenizerLike;
42
+ dispose(): Promise<void>;
43
+ };
44
+ type TransformersJsModule = {
45
+ pipeline(task: "feature-extraction", repo: string, options: {
46
+ cache_dir: string;
47
+ revision: string;
48
+ dtype: "fp32" | "q8" | "q4";
49
+ progress_callback?: (progress: TransformersJsProgressInfo) => void;
50
+ session_options?: {
51
+ executionProviders: TransformersJsExecutionProvider[];
52
+ };
53
+ }): Promise<FeatureExtractionPipeline>;
54
+ };
55
+ type TransformersJsProgressInfo = {
56
+ status: "initiate" | "download" | "progress" | "done" | "ready";
57
+ file?: string;
58
+ loaded?: number;
59
+ total?: number;
60
+ };
61
+ type TransformersJsLoader = () => Promise<TransformersJsModule>;
62
+ type TransformersJsExecutionProvider = "cpu" | "webgpu" | "cuda" | "dml";
63
+ type TransformersJsDependencies = {
64
+ loadRuntime: TransformersJsLoader;
65
+ };
66
+ export declare class TransformersJsEmbeddingModel extends BaseEmbeddingModel {
67
+ private readonly entry;
68
+ readonly info: EmbeddingModelInfo;
69
+ private readonly modelCacheDir;
70
+ private readonly executionProvider;
71
+ private readonly dependencies;
72
+ private pipeline;
73
+ private pipelineLoadPromise;
74
+ private usingCpuFallback;
75
+ private disposed;
76
+ constructor(entry: TransformersJsEmbeddingCatalogEntry, options: CreateEmbeddingModelOptions, dependencies?: Partial<TransformersJsDependencies>);
77
+ protected doEmbed(contents: readonly Content[], options: NormalizedEmbeddingOptions): Promise<EmbeddingResult>;
78
+ private embedBatch;
79
+ dispose(): Promise<void>;
80
+ private ensurePipeline;
81
+ private loadPipeline;
82
+ private embedTexts;
83
+ private fallbackToCpu;
84
+ private createPipeline;
85
+ private ensureNotDisposed;
86
+ }
87
+ export {};