@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,66 +1,94 @@
1
- import { EngineError } from "../../../errors/index.js";
2
- import { globalConfigPath } from "../../../config.js";
3
- 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";
4
5
  // -----------------------------------------------------------------------------
5
- // text-embedding-v4
6
+ // Text embedding models (OpenAI-compatible API)
6
7
  // -----------------------------------------------------------------------------
7
- const DEFAULT_QWEN_TEXT_EMBEDDING_V4_ENDPOINT = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings";
8
- export class QwenTextEmbeddingV4Model extends EmbeddingModel {
9
- ref = {
10
- provider: "qwen",
11
- model: "text-embedding-v4",
12
- };
13
- dimension = 1024;
14
- metric = "cosine";
15
- supportedContentKinds = ["text"];
16
- limits = {
17
- maxBatchSize: 10,
18
- maxInputTokens: 8192,
19
- };
20
- recommendedIndexConcurrency = 8;
21
- 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;
22
23
  apiKey;
23
24
  endpoint;
24
- constructor(options) {
25
+ displayName;
26
+ errorCodePrefix;
27
+ dependencies;
28
+ constructor(entry, spec, options, dependencies) {
25
29
  super();
26
- if (options.apiKey.trim().length === 0) {
27
- throw new EngineError("Qwen text-embedding-v4 model requires an API key", {
28
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_API_KEY",
29
- context: `model=${this.ref.model}\nhint=Pass --api-key, set ZVEC_GREP_API_KEY, or configure providers.qwen.apiKey in ${globalConfigPath()}.`,
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()}.`,
30
55
  });
31
56
  }
32
- const endpoint = normalizeEndpoint(options.endpoint ?? DEFAULT_QWEN_TEXT_EMBEDDING_V4_ENDPOINT);
33
57
  if (endpoint.length === 0) {
34
- throw new EngineError("Qwen text-embedding-v4 model requires an endpoint", {
35
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_ENDPOINT",
36
- 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}`,
37
61
  });
38
62
  }
39
- this.apiKey = options.apiKey;
63
+ this.apiKey = apiKey;
40
64
  this.endpoint = endpoint;
41
65
  }
42
- async doEmbed(contents, _options) {
66
+ async doEmbed(contents, options) {
43
67
  const texts = contents.map((content) => content.text);
44
68
  let response;
69
+ const signal = remoteEmbeddingSignal(options.signal);
45
70
  try {
46
- response = await fetch(this.endpoint, {
71
+ response = await this.dependencies.fetch(this.endpoint, {
47
72
  method: "POST",
48
73
  headers: {
74
+ ...traceHeaders(),
49
75
  Authorization: `Bearer ${this.apiKey}`,
50
76
  "Content-Type": "application/json",
51
77
  },
52
78
  body: JSON.stringify({
53
- model: this.ref.model,
79
+ model: this.entry.model,
54
80
  input: texts,
55
- dimensions: this.dimension,
81
+ dimensions: this.info.dimension,
56
82
  encoding_format: "float",
57
83
  }),
84
+ signal,
58
85
  });
59
86
  }
60
87
  catch (cause) {
61
- throw new EngineError("Qwen text-embedding-v4 request failed", {
62
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_REQUEST_FAILED",
63
- 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}`,
64
92
  cause,
65
93
  });
66
94
  }
@@ -69,23 +97,23 @@ export class QwenTextEmbeddingV4Model extends EmbeddingModel {
69
97
  body = await response.json();
70
98
  }
71
99
  catch (cause) {
72
- throw new EngineError("Qwen text-embedding-v4 response was not valid JSON", {
73
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_JSON",
74
- 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}`,
75
103
  cause,
76
104
  });
77
105
  }
78
106
  if (!response.ok) {
79
107
  const error = readProviderError(body);
80
- throw new EngineError("Qwen text-embedding-v4 request returned an error", {
81
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_API_ERROR",
82
- 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),
83
111
  });
84
112
  }
85
113
  if (!isRecord(body) || !Array.isArray(body.data)) {
86
- throw new EngineError("Qwen text-embedding-v4 response did not include data", {
87
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_MISSING_DATA",
88
- 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}`,
89
117
  });
90
118
  }
91
119
  const vectors = new Array(texts.length);
@@ -93,75 +121,95 @@ export class QwenTextEmbeddingV4Model extends EmbeddingModel {
93
121
  if (!isRecord(item) ||
94
122
  typeof item.index !== "number" ||
95
123
  !Number.isInteger(item.index)) {
96
- throw new EngineError("Qwen text-embedding-v4 response included an invalid index", {
97
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_INDEX",
98
- context: `model=${this.ref.model} index=${isRecord(item) ? String(item.index) : "unknown"}`,
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"}`,
99
127
  });
100
128
  }
101
129
  if (item.index < 0 || item.index >= texts.length) {
102
- throw new EngineError("Qwen text-embedding-v4 response index was out of range", {
103
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INDEX_OUT_OF_RANGE",
104
- 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}`,
105
133
  });
106
134
  }
107
135
  if (!Array.isArray(item.embedding)) {
108
- throw new EngineError("Qwen text-embedding-v4 response included an invalid embedding", {
109
- code: "ZVEC_GREP.ENGINE.MODELS.QWEN_TEXT_EMBEDDING_V4_INVALID_VECTOR",
110
- 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}`,
111
139
  });
112
140
  }
113
141
  vectors[item.index] = item.embedding;
114
142
  }
115
- 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);
116
157
  }
117
158
  }
118
159
  // -----------------------------------------------------------------------------
119
160
  // qwen3-vl-embedding
120
161
  // -----------------------------------------------------------------------------
121
- const DEFAULT_QWEN3_VL_EMBEDDING_ENDPOINT = "https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding";
122
162
  const QWEN3_VL_EMBEDDING_MAX_IMAGE_COUNT = 10;
123
163
  const QWEN3_VL_EMBEDDING_SUPPORTED_IMAGE_FORMATS = [
124
164
  "jpeg",
125
165
  "png",
126
166
  "webp",
127
167
  ];
128
- export class Qwen3VlEmbeddingModel extends EmbeddingModel {
129
- ref = {
130
- provider: "qwen",
131
- model: "qwen3-vl-embedding",
132
- };
133
- dimension = 2560;
134
- metric = "cosine";
135
- supportedContentKinds = ["text", "image"];
136
- limits = {
137
- maxBatchSize: 20,
138
- maxInputTokens: 32000,
139
- maxImageBytes: 10 * 1024 * 1024,
140
- };
141
- recommendedIndexConcurrency = 4;
142
- maxIndexConcurrency = 8;
168
+ export class Qwen3VlEmbeddingModel extends BaseEmbeddingModel {
169
+ info;
170
+ entry;
143
171
  apiKey;
144
172
  endpoint;
145
- constructor(options) {
173
+ dependencies;
174
+ constructor(entry, options, dependencies = {}) {
146
175
  super();
147
- 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) {
148
197
  throw new EngineError("Qwen3 VL embedding model requires an API key", {
149
198
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_API_KEY",
150
- context: `model=${this.ref.model}\nhint=Pass --api-key, set ZVEC_GREP_API_KEY, or configure providers.qwen.apiKey in ${globalConfigPath()}.`,
199
+ context: `model=${this.info.reference}\nhint=Pass --api-key, set ZVEC_GREP_API_KEY, or configure providers.qwen.apiKey in ${globalConfigPath()}.`,
151
200
  });
152
201
  }
153
- const endpoint = normalizeEndpoint(options.endpoint ?? DEFAULT_QWEN3_VL_EMBEDDING_ENDPOINT);
154
202
  if (endpoint.length === 0) {
155
203
  throw new EngineError("Qwen3 VL embedding model requires an endpoint", {
156
204
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_ENDPOINT",
157
- context: `model=${this.ref.model}`,
205
+ context: `model=${this.info.reference}`,
158
206
  });
159
207
  }
160
- this.apiKey = options.apiKey;
208
+ this.apiKey = apiKey;
161
209
  this.endpoint = endpoint;
162
210
  }
163
- async doEmbed(contents, _options) {
164
- validateQwen3VlContents(this.ref.model, contents);
211
+ async doEmbed(contents, options) {
212
+ validateQwen3VlContents(this.entry.model, contents);
165
213
  const requestContents = contents.map((content) => {
166
214
  if (content.kind === "text") {
167
215
  return {
@@ -173,28 +221,32 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
173
221
  };
174
222
  });
175
223
  let response;
224
+ const signal = remoteEmbeddingSignal(options.signal);
176
225
  try {
177
- response = await fetch(this.endpoint, {
226
+ response = await this.dependencies.fetch(this.endpoint, {
178
227
  method: "POST",
179
228
  headers: {
229
+ ...traceHeaders(),
180
230
  Authorization: `Bearer ${this.apiKey}`,
181
231
  "Content-Type": "application/json",
182
232
  },
183
233
  body: JSON.stringify({
184
- model: this.ref.model,
234
+ model: this.entry.model,
185
235
  input: {
186
236
  contents: requestContents,
187
237
  },
188
238
  parameters: {
189
- dimension: this.dimension,
239
+ dimension: this.info.dimension,
190
240
  },
191
241
  }),
242
+ signal,
192
243
  });
193
244
  }
194
245
  catch (cause) {
246
+ throwIfEmbeddingCancelled(options.signal);
195
247
  throw new EngineError("Qwen3 VL embedding request failed", {
196
248
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_REQUEST_FAILED",
197
- context: `model=${this.ref.model} endpoint=${this.endpoint}`,
249
+ context: `model=${this.info.reference} endpoint=${this.endpoint} timeoutMs=${DEFAULT_REMOTE_EMBEDDING_TIMEOUT_MS}`,
198
250
  cause,
199
251
  });
200
252
  }
@@ -205,7 +257,7 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
205
257
  catch (cause) {
206
258
  throw new EngineError("Qwen3 VL embedding response was not valid JSON", {
207
259
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_JSON",
208
- context: `model=${this.ref.model} status=${response.status}`,
260
+ context: `model=${this.info.reference} status=${response.status}`,
209
261
  cause,
210
262
  });
211
263
  }
@@ -213,7 +265,7 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
213
265
  const error = readProviderError(body);
214
266
  throw new EngineError("Qwen3 VL embedding request returned an error", {
215
267
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_API_ERROR",
216
- context: providerErrorContext(this.ref.model, response, error),
268
+ context: providerErrorContext(this.entry.model, response, error),
217
269
  });
218
270
  }
219
271
  if (!isRecord(body) ||
@@ -221,7 +273,7 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
221
273
  !Array.isArray(body.output.embeddings)) {
222
274
  throw new EngineError("Qwen3 VL embedding response did not include embeddings", {
223
275
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_MISSING_EMBEDDINGS",
224
- context: `model=${this.ref.model}`,
276
+ context: `model=${this.info.reference}`,
225
277
  });
226
278
  }
227
279
  const vectors = new Array(contents.length);
@@ -229,34 +281,31 @@ export class Qwen3VlEmbeddingModel extends EmbeddingModel {
229
281
  if (!isRecord(item)) {
230
282
  throw new EngineError("Qwen3 VL embedding response included an invalid embedding item", {
231
283
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_ITEM",
232
- context: `model=${this.ref.model} index=${fallbackIndex}`,
284
+ context: `model=${this.info.reference} index=${fallbackIndex}`,
233
285
  });
234
286
  }
235
287
  const index = readEmbeddingIndex(item, fallbackIndex);
236
288
  if (index < 0 || index >= contents.length) {
237
289
  throw new EngineError("Qwen3 VL embedding response index was out of range", {
238
290
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INDEX_OUT_OF_RANGE",
239
- context: `model=${this.ref.model} index=${index} inputCount=${contents.length}`,
291
+ context: `model=${this.info.reference} index=${index} inputCount=${contents.length}`,
240
292
  });
241
293
  }
242
294
  if (!Array.isArray(item.embedding)) {
243
295
  throw new EngineError("Qwen3 VL embedding response included an invalid embedding", {
244
296
  code: "ZVEC_GREP.ENGINE.MODELS.QWEN3_VL_EMBEDDING_INVALID_VECTOR",
245
- context: `model=${this.ref.model} index=${index}`,
297
+ context: `model=${this.info.reference} index=${index}`,
246
298
  });
247
299
  }
248
300
  vectors[index] = item.embedding;
249
301
  }
250
- return vectors;
302
+ return { vectors, truncated: [] };
251
303
  }
252
304
  }
253
305
  // -----------------------------------------------------------------------------
254
306
  // Shared helpers
255
307
  // -----------------------------------------------------------------------------
256
308
  const BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
257
- function normalizeEndpoint(endpoint) {
258
- return endpoint.trim();
259
- }
260
309
  function providerErrorContext(model, response, error) {
261
310
  const retryAfter = retryAfterHeaderMs(response.headers.get("retry-after"));
262
311
  const retryAfterDetail = typeof retryAfter === "number" ? ` retryAfterMs=${retryAfter}` : "";
@@ -347,4 +396,16 @@ function bytesToBase64(bytes) {
347
396
  }
348
397
  return output;
349
398
  }
350
- //# 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 {};