@angri450/zvec-grep 0.2.2

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 (418) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +319 -0
  3. package/README_CN.md +297 -0
  4. package/dist/authorization/index.d.ts +7 -0
  5. package/dist/authorization/index.js +7 -0
  6. package/dist/authorization/index.js.map +1 -0
  7. package/dist/authorization/manager.d.ts +8 -0
  8. package/dist/authorization/manager.js +19 -0
  9. package/dist/authorization/manager.js.map +1 -0
  10. package/dist/authorization/operation.d.ts +7 -0
  11. package/dist/authorization/operation.js +50 -0
  12. package/dist/authorization/operation.js.map +1 -0
  13. package/dist/authorization/planner.d.ts +21 -0
  14. package/dist/authorization/planner.js +97 -0
  15. package/dist/authorization/planner.js.map +1 -0
  16. package/dist/authorization/prompt.d.ts +12 -0
  17. package/dist/authorization/prompt.js +63 -0
  18. package/dist/authorization/prompt.js.map +1 -0
  19. package/dist/authorization/store.d.ts +20 -0
  20. package/dist/authorization/store.js +251 -0
  21. package/dist/authorization/store.js.map +1 -0
  22. package/dist/authorization/target.d.ts +15 -0
  23. package/dist/authorization/target.js +49 -0
  24. package/dist/authorization/target.js.map +1 -0
  25. package/dist/authorization/types.d.ts +61 -0
  26. package/dist/authorization/types.js +2 -0
  27. package/dist/authorization/types.js.map +1 -0
  28. package/dist/cli/args.d.ts +6 -0
  29. package/dist/cli/args.js +1255 -0
  30. package/dist/cli/args.js.map +1 -0
  31. package/dist/cli/auth.d.ts +21 -0
  32. package/dist/cli/auth.js +209 -0
  33. package/dist/cli/auth.js.map +1 -0
  34. package/dist/cli/commands.d.ts +4 -0
  35. package/dist/cli/commands.js +801 -0
  36. package/dist/cli/commands.js.map +1 -0
  37. package/dist/cli/errors.d.ts +9 -0
  38. package/dist/cli/errors.js +131 -0
  39. package/dist/cli/errors.js.map +1 -0
  40. package/dist/cli/format/context.d.ts +9 -0
  41. package/dist/cli/format/context.js +786 -0
  42. package/dist/cli/format/context.js.map +1 -0
  43. package/dist/cli/format/debug.d.ts +4 -0
  44. package/dist/cli/format/debug.js +60 -0
  45. package/dist/cli/format/debug.js.map +1 -0
  46. package/dist/cli/format/highlight.d.ts +3 -0
  47. package/dist/cli/format/highlight.js +106 -0
  48. package/dist/cli/format/highlight.js.map +1 -0
  49. package/dist/cli/format/progress.d.ts +13 -0
  50. package/dist/cli/format/progress.js +290 -0
  51. package/dist/cli/format/progress.js.map +1 -0
  52. package/dist/cli/format/range.d.ts +3 -0
  53. package/dist/cli/format/range.js +24 -0
  54. package/dist/cli/format/range.js.map +1 -0
  55. package/dist/cli/format/status.d.ts +83 -0
  56. package/dist/cli/format/status.js +530 -0
  57. package/dist/cli/format/status.js.map +1 -0
  58. package/dist/cli/help.d.ts +1 -0
  59. package/dist/cli/help.js +546 -0
  60. package/dist/cli/help.js.map +1 -0
  61. package/dist/cli/index.d.ts +2 -0
  62. package/dist/cli/index.js +40 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/install.d.ts +4 -0
  65. package/dist/cli/install.js +1735 -0
  66. package/dist/cli/install.js.map +1 -0
  67. package/dist/cli/managed-rg.d.ts +10 -0
  68. package/dist/cli/managed-rg.js +337 -0
  69. package/dist/cli/managed-rg.js.map +1 -0
  70. package/dist/cli/server-search.d.ts +3 -0
  71. package/dist/cli/server-search.js +12 -0
  72. package/dist/cli/server-search.js.map +1 -0
  73. package/dist/cli/types.d.ts +87 -0
  74. package/dist/cli/types.js +10 -0
  75. package/dist/cli/types.js.map +1 -0
  76. package/dist/cli/version.d.ts +1 -0
  77. package/dist/cli/version.js +13 -0
  78. package/dist/cli/version.js.map +1 -0
  79. package/dist/client/daemon-client.d.ts +31 -0
  80. package/dist/client/daemon-client.js +203 -0
  81. package/dist/client/daemon-client.js.map +1 -0
  82. package/dist/client/mode-router.d.ts +9 -0
  83. package/dist/client/mode-router.js +28 -0
  84. package/dist/client/mode-router.js.map +1 -0
  85. package/dist/client/search-policy.d.ts +11 -0
  86. package/dist/client/search-policy.js +15 -0
  87. package/dist/client/search-policy.js.map +1 -0
  88. package/dist/daemon/backend.d.ts +78 -0
  89. package/dist/daemon/backend.js +1118 -0
  90. package/dist/daemon/backend.js.map +1 -0
  91. package/dist/daemon/change-set.d.ts +30 -0
  92. package/dist/daemon/change-set.js +163 -0
  93. package/dist/daemon/change-set.js.map +1 -0
  94. package/dist/daemon/config.d.ts +27 -0
  95. package/dist/daemon/config.js +107 -0
  96. package/dist/daemon/config.js.map +1 -0
  97. package/dist/daemon/errors.d.ts +5 -0
  98. package/dist/daemon/errors.js +11 -0
  99. package/dist/daemon/errors.js.map +1 -0
  100. package/dist/daemon/http-server.d.ts +30 -0
  101. package/dist/daemon/http-server.js +307 -0
  102. package/dist/daemon/http-server.js.map +1 -0
  103. package/dist/daemon/index-coordinator.d.ts +22 -0
  104. package/dist/daemon/index-coordinator.js +55 -0
  105. package/dist/daemon/index-coordinator.js.map +1 -0
  106. package/dist/daemon/job-scheduler.d.ts +85 -0
  107. package/dist/daemon/job-scheduler.js +492 -0
  108. package/dist/daemon/job-scheduler.js.map +1 -0
  109. package/dist/daemon/logger.d.ts +10 -0
  110. package/dist/daemon/logger.js +101 -0
  111. package/dist/daemon/logger.js.map +1 -0
  112. package/dist/daemon/model-pool.d.ts +48 -0
  113. package/dist/daemon/model-pool.js +190 -0
  114. package/dist/daemon/model-pool.js.map +1 -0
  115. package/dist/daemon/root-lease.d.ts +14 -0
  116. package/dist/daemon/root-lease.js +197 -0
  117. package/dist/daemon/root-lease.js.map +1 -0
  118. package/dist/daemon/root-runtime.d.ts +80 -0
  119. package/dist/daemon/root-runtime.js +340 -0
  120. package/dist/daemon/root-runtime.js.map +1 -0
  121. package/dist/daemon/runtime-manager.d.ts +47 -0
  122. package/dist/daemon/runtime-manager.js +252 -0
  123. package/dist/daemon/runtime-manager.js.map +1 -0
  124. package/dist/daemon/runtime.d.ts +12 -0
  125. package/dist/daemon/runtime.js +105 -0
  126. package/dist/daemon/runtime.js.map +1 -0
  127. package/dist/daemon/server-controller.d.ts +38 -0
  128. package/dist/daemon/server-controller.js +327 -0
  129. package/dist/daemon/server-controller.js.map +1 -0
  130. package/dist/daemon/watch-manager.d.ts +62 -0
  131. package/dist/daemon/watch-manager.js +415 -0
  132. package/dist/daemon/watch-manager.js.map +1 -0
  133. package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
  134. package/dist/daemon/workspace-read-session-cache.js +115 -0
  135. package/dist/daemon/workspace-read-session-cache.js.map +1 -0
  136. package/dist/engine/code-formats.d.ts +3 -0
  137. package/dist/engine/code-formats.js +14 -0
  138. package/dist/engine/code-formats.js.map +1 -0
  139. package/dist/engine/config.d.ts +57 -0
  140. package/dist/engine/config.js +351 -0
  141. package/dist/engine/config.js.map +1 -0
  142. package/dist/engine/errors.d.ts +20 -0
  143. package/dist/engine/errors.js +51 -0
  144. package/dist/engine/errors.js.map +1 -0
  145. package/dist/engine/extraction/code/adapter.d.ts +19 -0
  146. package/dist/engine/extraction/code/adapter.js +24 -0
  147. package/dist/engine/extraction/code/adapter.js.map +1 -0
  148. package/dist/engine/extraction/code/extractor.d.ts +13 -0
  149. package/dist/engine/extraction/code/extractor.js +696 -0
  150. package/dist/engine/extraction/code/extractor.js.map +1 -0
  151. package/dist/engine/extraction/code/families/c-family.d.ts +2 -0
  152. package/dist/engine/extraction/code/families/c-family.js +122 -0
  153. package/dist/engine/extraction/code/families/c-family.js.map +1 -0
  154. package/dist/engine/extraction/code/families/js-ts.d.ts +12 -0
  155. package/dist/engine/extraction/code/families/js-ts.js +118 -0
  156. package/dist/engine/extraction/code/families/js-ts.js.map +1 -0
  157. package/dist/engine/extraction/code/families/metadata.d.ts +8 -0
  158. package/dist/engine/extraction/code/families/metadata.js +86 -0
  159. package/dist/engine/extraction/code/families/metadata.js.map +1 -0
  160. package/dist/engine/extraction/code/families/name-field.d.ts +3 -0
  161. package/dist/engine/extraction/code/families/name-field.js +22 -0
  162. package/dist/engine/extraction/code/families/name-field.js.map +1 -0
  163. package/dist/engine/extraction/code/languages/c.d.ts +1 -0
  164. package/dist/engine/extraction/code/languages/c.js +12 -0
  165. package/dist/engine/extraction/code/languages/c.js.map +1 -0
  166. package/dist/engine/extraction/code/languages/cpp.d.ts +1 -0
  167. package/dist/engine/extraction/code/languages/cpp.js +18 -0
  168. package/dist/engine/extraction/code/languages/cpp.js.map +1 -0
  169. package/dist/engine/extraction/code/languages/go.d.ts +2 -0
  170. package/dist/engine/extraction/code/languages/go.js +70 -0
  171. package/dist/engine/extraction/code/languages/go.js.map +1 -0
  172. package/dist/engine/extraction/code/languages/java.d.ts +1 -0
  173. package/dist/engine/extraction/code/languages/java.js +17 -0
  174. package/dist/engine/extraction/code/languages/java.js.map +1 -0
  175. package/dist/engine/extraction/code/languages/javascript.d.ts +2 -0
  176. package/dist/engine/extraction/code/languages/javascript.js +23 -0
  177. package/dist/engine/extraction/code/languages/javascript.js.map +1 -0
  178. package/dist/engine/extraction/code/languages/python.d.ts +2 -0
  179. package/dist/engine/extraction/code/languages/python.js +52 -0
  180. package/dist/engine/extraction/code/languages/python.js.map +1 -0
  181. package/dist/engine/extraction/code/languages/rust.d.ts +2 -0
  182. package/dist/engine/extraction/code/languages/rust.js +25 -0
  183. package/dist/engine/extraction/code/languages/rust.js.map +1 -0
  184. package/dist/engine/extraction/code/languages/typescript.d.ts +2 -0
  185. package/dist/engine/extraction/code/languages/typescript.js +37 -0
  186. package/dist/engine/extraction/code/languages/typescript.js.map +1 -0
  187. package/dist/engine/extraction/code/tree-sitter/grammar.d.ts +4 -0
  188. package/dist/engine/extraction/code/tree-sitter/grammar.js +49 -0
  189. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
  190. package/dist/engine/extraction/code/tree-sitter/nodes.d.ts +3 -0
  191. package/dist/engine/extraction/code/tree-sitter/nodes.js +27 -0
  192. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
  193. package/dist/engine/extraction/code/tree-sitter/parser.d.ts +2 -0
  194. package/dist/engine/extraction/code/tree-sitter/parser.js +31 -0
  195. package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
  196. package/dist/engine/extraction/ids.d.ts +1 -0
  197. package/dist/engine/extraction/ids.js +5 -0
  198. package/dist/engine/extraction/ids.js.map +1 -0
  199. package/dist/engine/extraction/image/extractor.d.ts +5 -0
  200. package/dist/engine/extraction/image/extractor.js +35 -0
  201. package/dist/engine/extraction/image/extractor.js.map +1 -0
  202. package/dist/engine/extraction/index.d.ts +4 -0
  203. package/dist/engine/extraction/index.js +3 -0
  204. package/dist/engine/extraction/index.js.map +1 -0
  205. package/dist/engine/extraction/markdown/extractor.d.ts +7 -0
  206. package/dist/engine/extraction/markdown/extractor.js +362 -0
  207. package/dist/engine/extraction/markdown/extractor.js.map +1 -0
  208. package/dist/engine/extraction/runtime.d.ts +9 -0
  209. package/dist/engine/extraction/runtime.js +37 -0
  210. package/dist/engine/extraction/runtime.js.map +1 -0
  211. package/dist/engine/extraction/source.d.ts +18 -0
  212. package/dist/engine/extraction/source.js +22 -0
  213. package/dist/engine/extraction/source.js.map +1 -0
  214. package/dist/engine/extraction/text/extractor.d.ts +7 -0
  215. package/dist/engine/extraction/text/extractor.js +168 -0
  216. package/dist/engine/extraction/text/extractor.js.map +1 -0
  217. package/dist/engine/extraction/types.d.ts +4 -0
  218. package/dist/engine/extraction/types.js +2 -0
  219. package/dist/engine/extraction/types.js.map +1 -0
  220. package/dist/engine/extraction/vector-content.d.ts +5 -0
  221. package/dist/engine/extraction/vector-content.js +83 -0
  222. package/dist/engine/extraction/vector-content.js.map +1 -0
  223. package/dist/engine/file-size-policy.d.ts +6 -0
  224. package/dist/engine/file-size-policy.js +20 -0
  225. package/dist/engine/file-size-policy.js.map +1 -0
  226. package/dist/engine/file-type.d.ts +15 -0
  227. package/dist/engine/file-type.js +152 -0
  228. package/dist/engine/file-type.js.map +1 -0
  229. package/dist/engine/index-status.d.ts +9 -0
  230. package/dist/engine/index-status.js +38 -0
  231. package/dist/engine/index-status.js.map +1 -0
  232. package/dist/engine/manifest.d.ts +13 -0
  233. package/dist/engine/manifest.js +124 -0
  234. package/dist/engine/manifest.js.map +1 -0
  235. package/dist/engine/models/artifact-cache-lock.d.ts +16 -0
  236. package/dist/engine/models/artifact-cache-lock.js +228 -0
  237. package/dist/engine/models/artifact-cache-lock.js.map +1 -0
  238. package/dist/engine/models/artifact-downloader.d.ts +77 -0
  239. package/dist/engine/models/artifact-downloader.js +766 -0
  240. package/dist/engine/models/artifact-downloader.js.map +1 -0
  241. package/dist/engine/models/backends/llama-cpp.d.ts +100 -0
  242. package/dist/engine/models/backends/llama-cpp.js +567 -0
  243. package/dist/engine/models/backends/llama-cpp.js.map +1 -0
  244. package/dist/engine/models/backends/model2vec-runtime.d.ts +63 -0
  245. package/dist/engine/models/backends/model2vec-runtime.js +112 -0
  246. package/dist/engine/models/backends/model2vec-runtime.js.map +1 -0
  247. package/dist/engine/models/backends/model2vec-tokenizer.d.ts +2 -0
  248. package/dist/engine/models/backends/model2vec-tokenizer.js +42 -0
  249. package/dist/engine/models/backends/model2vec-tokenizer.js.map +1 -0
  250. package/dist/engine/models/backends/model2vec-worker-pool.d.ts +25 -0
  251. package/dist/engine/models/backends/model2vec-worker-pool.js +264 -0
  252. package/dist/engine/models/backends/model2vec-worker-pool.js.map +1 -0
  253. package/dist/engine/models/backends/model2vec-worker.d.ts +1 -0
  254. package/dist/engine/models/backends/model2vec-worker.js +41 -0
  255. package/dist/engine/models/backends/model2vec-worker.js.map +1 -0
  256. package/dist/engine/models/backends/model2vec.d.ts +38 -0
  257. package/dist/engine/models/backends/model2vec.js +344 -0
  258. package/dist/engine/models/backends/model2vec.js.map +1 -0
  259. package/dist/engine/models/backends/qwen.d.ts +44 -0
  260. package/dist/engine/models/backends/qwen.js +411 -0
  261. package/dist/engine/models/backends/qwen.js.map +1 -0
  262. package/dist/engine/models/backends/transformers-js.d.ts +90 -0
  263. package/dist/engine/models/backends/transformers-js.js +411 -0
  264. package/dist/engine/models/backends/transformers-js.js.map +1 -0
  265. package/dist/engine/models/catalog.d.ts +490 -0
  266. package/dist/engine/models/catalog.js +522 -0
  267. package/dist/engine/models/catalog.js.map +1 -0
  268. package/dist/engine/models/download-progress.d.ts +16 -0
  269. package/dist/engine/models/download-progress.js +47 -0
  270. package/dist/engine/models/download-progress.js.map +1 -0
  271. package/dist/engine/models/embeddings.d.ts +73 -0
  272. package/dist/engine/models/embeddings.js +125 -0
  273. package/dist/engine/models/embeddings.js.map +1 -0
  274. package/dist/engine/models/factory.d.ts +2 -0
  275. package/dist/engine/models/factory.js +51 -0
  276. package/dist/engine/models/factory.js.map +1 -0
  277. package/dist/engine/models/index.d.ts +5 -0
  278. package/dist/engine/models/index.js +6 -0
  279. package/dist/engine/models/index.js.map +1 -0
  280. package/dist/engine/models/local-embedding-parallelism.d.ts +15 -0
  281. package/dist/engine/models/local-embedding-parallelism.js +63 -0
  282. package/dist/engine/models/local-embedding-parallelism.js.map +1 -0
  283. package/dist/engine/models/local-embedding-queue.d.ts +12 -0
  284. package/dist/engine/models/local-embedding-queue.js +65 -0
  285. package/dist/engine/models/local-embedding-queue.js.map +1 -0
  286. package/dist/engine/models/ranking.d.ts +19 -0
  287. package/dist/engine/models/ranking.js +2 -0
  288. package/dist/engine/models/ranking.js.map +1 -0
  289. package/dist/engine/models/resolution.d.ts +8 -0
  290. package/dist/engine/models/resolution.js +22 -0
  291. package/dist/engine/models/resolution.js.map +1 -0
  292. package/dist/engine/pipeline/indexing/index.d.ts +14 -0
  293. package/dist/engine/pipeline/indexing/index.js +1219 -0
  294. package/dist/engine/pipeline/indexing/index.js.map +1 -0
  295. package/dist/engine/pipeline/indexing/input-budget.d.ts +2 -0
  296. package/dist/engine/pipeline/indexing/input-budget.js +51 -0
  297. package/dist/engine/pipeline/indexing/input-budget.js.map +1 -0
  298. package/dist/engine/pipeline/indexing/root-paths.d.ts +7 -0
  299. package/dist/engine/pipeline/indexing/root-paths.js +148 -0
  300. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
  301. package/dist/engine/pipeline/indexing/scanner/index.d.ts +14 -0
  302. package/dist/engine/pipeline/indexing/scanner/index.js +776 -0
  303. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
  304. package/dist/engine/pipeline/search/index.d.ts +12 -0
  305. package/dist/engine/pipeline/search/index.js +811 -0
  306. package/dist/engine/pipeline/search/index.js.map +1 -0
  307. package/dist/engine/service/index.d.ts +3 -0
  308. package/dist/engine/service/index.js +2 -0
  309. package/dist/engine/service/index.js.map +1 -0
  310. package/dist/engine/service/lexical.d.ts +28 -0
  311. package/dist/engine/service/lexical.js +446 -0
  312. package/dist/engine/service/lexical.js.map +1 -0
  313. package/dist/engine/service/root.d.ts +15 -0
  314. package/dist/engine/service/root.js +57 -0
  315. package/dist/engine/service/root.js.map +1 -0
  316. package/dist/engine/service/structure-enrichment.d.ts +8 -0
  317. package/dist/engine/service/structure-enrichment.js +178 -0
  318. package/dist/engine/service/structure-enrichment.js.map +1 -0
  319. package/dist/engine/service/types.d.ts +212 -0
  320. package/dist/engine/service/types.js +2 -0
  321. package/dist/engine/service/types.js.map +1 -0
  322. package/dist/engine/service/workspace-index.d.ts +26 -0
  323. package/dist/engine/service/workspace-index.js +157 -0
  324. package/dist/engine/service/workspace-index.js.map +1 -0
  325. package/dist/engine/service/zvec-grep.d.ts +15 -0
  326. package/dist/engine/service/zvec-grep.js +1520 -0
  327. package/dist/engine/service/zvec-grep.js.map +1 -0
  328. package/dist/engine/storage/index.d.ts +53 -0
  329. package/dist/engine/storage/index.js +3 -0
  330. package/dist/engine/storage/index.js.map +1 -0
  331. package/dist/engine/storage/layout.d.ts +10 -0
  332. package/dist/engine/storage/layout.js +29 -0
  333. package/dist/engine/storage/layout.js.map +1 -0
  334. package/dist/engine/storage/zvec.d.ts +4 -0
  335. package/dist/engine/storage/zvec.js +976 -0
  336. package/dist/engine/storage/zvec.js.map +1 -0
  337. package/dist/engine/types.d.ts +303 -0
  338. package/dist/engine/types.js +14 -0
  339. package/dist/engine/types.js.map +1 -0
  340. package/dist/engine/utils/atomic-file.d.ts +3 -0
  341. package/dist/engine/utils/atomic-file.js +39 -0
  342. package/dist/engine/utils/atomic-file.js.map +1 -0
  343. package/dist/engine/utils/daemon-lease.d.ts +17 -0
  344. package/dist/engine/utils/daemon-lease.js +175 -0
  345. package/dist/engine/utils/daemon-lease.js.map +1 -0
  346. package/dist/engine/utils/file-selection.d.ts +10 -0
  347. package/dist/engine/utils/file-selection.js +157 -0
  348. package/dist/engine/utils/file-selection.js.map +1 -0
  349. package/dist/engine/utils/glob.d.ts +9 -0
  350. package/dist/engine/utils/glob.js +208 -0
  351. package/dist/engine/utils/glob.js.map +1 -0
  352. package/dist/engine/utils/hash.d.ts +2 -0
  353. package/dist/engine/utils/hash.js +8 -0
  354. package/dist/engine/utils/hash.js.map +1 -0
  355. package/dist/engine/utils/json.d.ts +8 -0
  356. package/dist/engine/utils/json.js +83 -0
  357. package/dist/engine/utils/json.js.map +1 -0
  358. package/dist/engine/utils/lock.d.ts +19 -0
  359. package/dist/engine/utils/lock.js +254 -0
  360. package/dist/engine/utils/lock.js.map +1 -0
  361. package/dist/engine/utils/path.d.ts +4 -0
  362. package/dist/engine/utils/path.js +18 -0
  363. package/dist/engine/utils/path.js.map +1 -0
  364. package/dist/engine/utils/timing.d.ts +19 -0
  365. package/dist/engine/utils/timing.js +87 -0
  366. package/dist/engine/utils/timing.js.map +1 -0
  367. package/dist/index-progress.d.ts +10 -0
  368. package/dist/index-progress.js +159 -0
  369. package/dist/index-progress.js.map +1 -0
  370. package/dist/index.d.ts +6 -0
  371. package/dist/index.js +4 -0
  372. package/dist/index.js.map +1 -0
  373. package/dist/mcp/http-transport.d.ts +27 -0
  374. package/dist/mcp/http-transport.js +182 -0
  375. package/dist/mcp/http-transport.js.map +1 -0
  376. package/dist/mcp/input-normalization.d.ts +38 -0
  377. package/dist/mcp/input-normalization.js +104 -0
  378. package/dist/mcp/input-normalization.js.map +1 -0
  379. package/dist/mcp/progress-heartbeat.d.ts +17 -0
  380. package/dist/mcp/progress-heartbeat.js +46 -0
  381. package/dist/mcp/progress-heartbeat.js.map +1 -0
  382. package/dist/mcp/request-metadata.d.ts +2 -0
  383. package/dist/mcp/request-metadata.js +11 -0
  384. package/dist/mcp/request-metadata.js.map +1 -0
  385. package/dist/mcp/request-state.d.ts +40 -0
  386. package/dist/mcp/request-state.js +210 -0
  387. package/dist/mcp/request-state.js.map +1 -0
  388. package/dist/mcp/result-format.d.ts +13 -0
  389. package/dist/mcp/result-format.js +75 -0
  390. package/dist/mcp/result-format.js.map +1 -0
  391. package/dist/mcp/schemas.d.ts +668 -0
  392. package/dist/mcp/schemas.js +512 -0
  393. package/dist/mcp/schemas.js.map +1 -0
  394. package/dist/mcp/stdio-bridge.d.ts +15 -0
  395. package/dist/mcp/stdio-bridge.js +190 -0
  396. package/dist/mcp/stdio-bridge.js.map +1 -0
  397. package/dist/mcp/tools.d.ts +153 -0
  398. package/dist/mcp/tools.js +488 -0
  399. package/dist/mcp/tools.js.map +1 -0
  400. package/dist/mcp/toolset.d.ts +5 -0
  401. package/dist/mcp/toolset.js +12 -0
  402. package/dist/mcp/toolset.js.map +1 -0
  403. package/dist/observability/trace-context.d.ts +11 -0
  404. package/dist/observability/trace-context.js +138 -0
  405. package/dist/observability/trace-context.js.map +1 -0
  406. package/dist/prompts/zvec-grep-guidance.d.ts +2 -0
  407. package/dist/prompts/zvec-grep-guidance.js +9 -0
  408. package/dist/prompts/zvec-grep-guidance.js.map +1 -0
  409. package/docs/01-agents.md +217 -0
  410. package/docs/02-cli.md +259 -0
  411. package/docs/03-mcp.md +185 -0
  412. package/docs/04-pipeline.md +234 -0
  413. package/docs/05-architecture.md +86 -0
  414. package/docs/06-server.md +279 -0
  415. package/docs/07-embedding.md +227 -0
  416. package/docs/08-roadmap.md +85 -0
  417. package/docs/README.md +53 -0
  418. package/package.json +87 -0
@@ -0,0 +1,411 @@
1
+ import { join, resolve } from "node:path";
2
+ import { EngineError } from "../../errors.js";
3
+ import { defaultHome } from "../../utils/path.js";
4
+ import { BaseEmbeddingModel, } from "../embeddings.js";
5
+ import { resolveModelArtifacts, } from "../artifact-downloader.js";
6
+ import { INDEX_EMBEDDING_CONCURRENCY_ENV, normalizeLocalEmbeddingConcurrency, resolveLocalEmbeddingParallelism, } from "../local-embedding-parallelism.js";
7
+ import { LocalEmbeddingQueue } from "../local-embedding-queue.js";
8
+ import { createModelDownloadProgressReporter, } from "../download-progress.js";
9
+ const DEFAULT_MODEL_CACHE_DIR = join(defaultHome(), "models");
10
+ async function defaultTransformersJsLoader() {
11
+ try {
12
+ return (await import("@huggingface/transformers"));
13
+ }
14
+ catch (cause) {
15
+ throw new EngineError("Transformers.js is required for this local embedding model", {
16
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_MISSING_DEPENDENCY",
17
+ context: "Reinstall zvec-grep to restore @huggingface/transformers",
18
+ cause,
19
+ });
20
+ }
21
+ }
22
+ let defaultRuntimeImport = null;
23
+ const LOAD_FAILED = "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_LOAD_FAILED";
24
+ const defaultDependencies = {
25
+ loadRuntime() {
26
+ defaultRuntimeImport ??= defaultTransformersJsLoader();
27
+ return defaultRuntimeImport;
28
+ },
29
+ resolveArtifacts: resolveModelArtifacts,
30
+ };
31
+ export class TransformersJsEmbeddingModel extends BaseEmbeddingModel {
32
+ entry;
33
+ info;
34
+ modelCacheDir;
35
+ executionProvider;
36
+ dependencies;
37
+ embeddingQueue;
38
+ pipeline = null;
39
+ pipelineLoadPromise = null;
40
+ pipelineLoadError = null;
41
+ resolvedArtifacts = null;
42
+ artifactResolutionPromise = null;
43
+ sourceFallbackWarningReported = false;
44
+ usingCpuFallback = false;
45
+ disposed = false;
46
+ constructor(entry, options, dependencies = {}) {
47
+ super();
48
+ this.entry = entry;
49
+ const parallelism = normalizeLocalEmbeddingConcurrency(options.embeddingConcurrency);
50
+ this.info = {
51
+ reference: entry.reference,
52
+ provider: entry.provider,
53
+ name: entry.model,
54
+ dimension: entry.dimension,
55
+ metric: entry.metric,
56
+ defaultConcurrency: parallelism ?? 1,
57
+ inputKinds: ["text"],
58
+ limits: {
59
+ maxBatchSize: entry.maxBatchSize,
60
+ maxConcurrentBatches: parallelism ?? 1,
61
+ maxInputTokens: entry.maxInputTokens,
62
+ },
63
+ };
64
+ this.modelCacheDir = resolve(options.modelCacheDir ??
65
+ process.env.ZVEC_GREP_MODEL_CACHE ??
66
+ DEFAULT_MODEL_CACHE_DIR);
67
+ this.executionProvider = resolveExecutionProvider(options.device);
68
+ this.dependencies = { ...defaultDependencies, ...dependencies };
69
+ this.embeddingQueue = new LocalEmbeddingQueue(() => resolveLocalEmbeddingParallelism({
70
+ override: parallelism,
71
+ gpu: this.executionProvider !== null && this.executionProvider !== "cpu",
72
+ }));
73
+ }
74
+ async doEmbed(contents, options) {
75
+ return await this.embedBatch(contents, options);
76
+ }
77
+ async embedBatch(contents, options) {
78
+ let attempt = await this.embeddingQueue.run(() => this.runEmbeddingAttempt(contents, options));
79
+ if (attempt.ok)
80
+ return attempt.result;
81
+ let failure = attempt.cause;
82
+ if (attempt.canRetryOnCpu) {
83
+ try {
84
+ // The failed attempt has released its slot. Wait for all other users of
85
+ // the GPU pipeline before disposing it. Concurrent failures share one
86
+ // CPU replacement and each retry their own batch once.
87
+ await this.embeddingQueue.run(async () => {
88
+ this.ensureNotDisposed();
89
+ if (!this.usingCpuFallback) {
90
+ await this.fallbackToCpu(failure, options.onProgress);
91
+ }
92
+ }, true);
93
+ attempt = await this.embeddingQueue.run(() => this.runEmbeddingAttempt(contents, options));
94
+ if (attempt.ok)
95
+ return attempt.result;
96
+ failure = attempt.cause;
97
+ }
98
+ catch (cause) {
99
+ failure = cause;
100
+ }
101
+ }
102
+ if (failure instanceof EngineError && failure.code === LOAD_FAILED) {
103
+ throw failure;
104
+ }
105
+ throw new EngineError("Transformers.js embedding failed", {
106
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_EMBED_FAILED",
107
+ context: `model=${this.entry.reference} repo=${this.entry.repo}${this.executionProvider && this.executionProvider !== "cpu" ? `; for GPU errors, retry with --device cpu${options.purpose === "document" ? ` or index with --index-embedding-concurrency 1 (environment fallback: ${INDEX_EMBEDDING_CONCURRENCY_ENV}=1)` : ""}` : ""}`,
108
+ cause: failure,
109
+ });
110
+ }
111
+ async runEmbeddingAttempt(contents, options) {
112
+ this.ensureNotDisposed();
113
+ const texts = contents.map((content) => formatText(content.text, options.purpose, this.entry));
114
+ const pipeline = await this.ensurePipeline(options.onProgress);
115
+ let truncatedInputIndexes;
116
+ try {
117
+ truncatedInputIndexes = await findTruncatedInputIndexes(pipeline.tokenizer, texts, this.entry.maxInputTokens);
118
+ }
119
+ catch (cause) {
120
+ throw new EngineError("Transformers.js tokenization failed", {
121
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_TOKENIZATION_FAILED",
122
+ context: `model=${this.entry.reference} repo=${this.entry.repo}`,
123
+ cause,
124
+ });
125
+ }
126
+ try {
127
+ return {
128
+ ok: true,
129
+ result: await this.embedTexts(pipeline, texts, truncatedInputIndexes),
130
+ };
131
+ }
132
+ catch (cause) {
133
+ return {
134
+ ok: false,
135
+ cause,
136
+ canRetryOnCpu: !this.usingCpuFallback &&
137
+ this.executionProvider !== null &&
138
+ this.executionProvider !== "cpu",
139
+ };
140
+ }
141
+ }
142
+ async dispose() {
143
+ if (this.disposed) {
144
+ return;
145
+ }
146
+ this.disposed = true;
147
+ await this.embeddingQueue.run(async () => {
148
+ const pipeline = this.pipeline;
149
+ this.pipeline = null;
150
+ this.pipelineLoadPromise = null;
151
+ await pipeline?.dispose();
152
+ }, true);
153
+ }
154
+ async ensurePipeline(onProgress) {
155
+ if (this.pipeline) {
156
+ return this.pipeline;
157
+ }
158
+ if (this.pipelineLoadError) {
159
+ throw this.pipelineLoadError;
160
+ }
161
+ if (this.pipelineLoadPromise) {
162
+ return await this.pipelineLoadPromise;
163
+ }
164
+ // Normalize the shared promise itself so concurrent callers also receive
165
+ // the terminal error for artifact resolution and runtime import failures.
166
+ this.pipelineLoadPromise = this.loadPipeline(onProgress).catch((cause) => {
167
+ this.pipelineLoadError =
168
+ cause instanceof EngineError && cause.code === LOAD_FAILED
169
+ ? cause
170
+ : new EngineError(`Transformers.js model initialization failed (${formatErrorMessage(cause)}). Check the model files and runtime configuration, then restart the process or daemon before retrying.`, {
171
+ code: LOAD_FAILED,
172
+ context: `model=${this.entry.reference} repo=${this.entry.repo}`,
173
+ cause,
174
+ });
175
+ throw this.pipelineLoadError;
176
+ });
177
+ try {
178
+ this.pipeline = await this.pipelineLoadPromise;
179
+ return this.pipeline;
180
+ }
181
+ finally {
182
+ this.pipelineLoadPromise = null;
183
+ }
184
+ }
185
+ async loadPipeline(onProgress) {
186
+ const downloadProgress = createModelDownloadProgressReporter(this.entry.reference, onProgress);
187
+ downloadProgress.start();
188
+ const resolvedArtifacts = await this.ensureArtifacts(downloadProgress);
189
+ const runtime = await this.dependencies.loadRuntime();
190
+ let pipeline;
191
+ const executionProvider = this.usingCpuFallback
192
+ ? "cpu"
193
+ : this.executionProvider;
194
+ try {
195
+ pipeline = await this.createPipeline(runtime, resolvedArtifacts.directory, executionProvider);
196
+ }
197
+ catch (cause) {
198
+ const recovery = executionProvider && executionProvider !== "cpu"
199
+ ? "Restart the process or daemon and retry with --device cpu."
200
+ : "Check the model files and runtime configuration, then restart the process or daemon before retrying.";
201
+ const failure = new EngineError(`Transformers.js ${executionProvider ?? "cpu"} model initialization failed (${formatErrorMessage(cause)}). ${recovery}`, {
202
+ code: LOAD_FAILED,
203
+ context: `model=${this.entry.reference} repo=${this.entry.repo}`,
204
+ cause,
205
+ });
206
+ // Transformers.js 3.x retains its first session promise even on failure.
207
+ // A CPU retry cannot recover a runtime whose first session failed. Do not
208
+ // retry initialization here, or globally block unrelated models: pipeline
209
+ // failures can also come from a tokenizer before ONNX session creation.
210
+ if (!downloadProgress.warning(failure.message)) {
211
+ process.stderr.write(`zvec-grep warning: ${failure.message}\n`);
212
+ }
213
+ throw failure;
214
+ }
215
+ pipeline.tokenizer.model_max_length = this.entry.maxInputTokens;
216
+ downloadProgress.finish();
217
+ return pipeline;
218
+ }
219
+ async embedTexts(pipeline, texts, truncatedInputIndexes) {
220
+ const tensor = await pipeline(texts, {
221
+ pooling: this.entry.pooling,
222
+ normalize: this.entry.normalize,
223
+ truncation: true,
224
+ max_length: this.entry.maxInputTokens,
225
+ });
226
+ return {
227
+ vectors: tensorToVectors(tensor, texts.length, this.entry.dimension),
228
+ truncated: truncatedInputIndexes,
229
+ };
230
+ }
231
+ async fallbackToCpu(cause, onProgress) {
232
+ if (this.usingCpuFallback ||
233
+ !this.executionProvider ||
234
+ this.executionProvider === "cpu") {
235
+ return false;
236
+ }
237
+ const warning = `Transformers.js ${this.executionProvider} embedding inference failed (${formatErrorMessage(cause)}), falling back to CPU.`;
238
+ if (onProgress) {
239
+ onProgress({
240
+ stage: "warning",
241
+ model: this.entry.reference,
242
+ message: warning,
243
+ });
244
+ }
245
+ else {
246
+ process.stderr.write(`zvec-grep warning: ${warning}\n`);
247
+ }
248
+ this.usingCpuFallback = true;
249
+ const pipeline = this.pipeline;
250
+ this.pipeline = null;
251
+ this.pipelineLoadPromise = null;
252
+ await pipeline?.dispose();
253
+ return true;
254
+ }
255
+ async createPipeline(runtime, modelDirectory, executionProvider) {
256
+ return await runtime.pipeline("feature-extraction", modelDirectory, {
257
+ dtype: this.entry.dtype,
258
+ local_files_only: true,
259
+ ...(executionProvider
260
+ ? { session_options: { executionProviders: [executionProvider] } }
261
+ : {}),
262
+ });
263
+ }
264
+ async ensureArtifacts(downloadProgress) {
265
+ if (this.resolvedArtifacts) {
266
+ return this.resolvedArtifacts;
267
+ }
268
+ if (this.artifactResolutionPromise) {
269
+ return await this.artifactResolutionPromise;
270
+ }
271
+ const sources = this.createArtifactSources();
272
+ this.artifactResolutionPromise = this.dependencies.resolveArtifacts({
273
+ model: this.entry.reference,
274
+ sources,
275
+ artifacts: this.entry.artifacts,
276
+ onDownloadPlan: (artifacts) => {
277
+ downloadProgress.setDownloadPlan(artifacts);
278
+ },
279
+ onProgress: (progress) => {
280
+ downloadProgress.report({
281
+ artifact: progress.artifact,
282
+ downloadedBytes: progress.downloadedBytes,
283
+ });
284
+ },
285
+ onFallback: (warning) => {
286
+ if (this.sourceFallbackWarningReported) {
287
+ return;
288
+ }
289
+ this.sourceFallbackWarningReported = true;
290
+ if (!downloadProgress.warning(warning)) {
291
+ process.stderr.write(`zvec-grep warning: ${warning}\n`);
292
+ }
293
+ },
294
+ });
295
+ try {
296
+ this.resolvedArtifacts = await this.artifactResolutionPromise;
297
+ return this.resolvedArtifacts;
298
+ }
299
+ finally {
300
+ this.artifactResolutionPromise = null;
301
+ }
302
+ }
303
+ createArtifactSources() {
304
+ const huggingFace = this.entry.sources.huggingFace;
305
+ const modelScope = this.entry.sources.modelScope;
306
+ return [
307
+ {
308
+ kind: "huggingface",
309
+ repo: huggingFace.repo,
310
+ revision: huggingFace.revision,
311
+ cacheDirectory: resolve(this.modelCacheDir, huggingFace.repo, huggingFace.revision),
312
+ },
313
+ {
314
+ kind: "modelscope",
315
+ repo: modelScope.repo,
316
+ revision: modelScope.revision,
317
+ cacheDirectory: resolve(this.modelCacheDir, "modelscope", "transformers-js", modelScope.repo.replaceAll("/", "--"), modelScope.revision),
318
+ },
319
+ ];
320
+ }
321
+ ensureNotDisposed() {
322
+ if (this.disposed) {
323
+ throw new EngineError("Transformers.js embedding model is disposed", {
324
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_DISPOSED",
325
+ context: `model=${this.entry.reference}`,
326
+ });
327
+ }
328
+ }
329
+ }
330
+ async function findTruncatedInputIndexes(tokenizer, texts, maxInputTokens) {
331
+ const encoded = await tokenizer(texts, {
332
+ truncation: true,
333
+ max_length: maxInputTokens + 1,
334
+ padding: true,
335
+ });
336
+ const mask = encoded.attention_mask;
337
+ const [batchSize, sequenceLength] = mask.dims;
338
+ if (mask.dims.length !== 2 ||
339
+ batchSize !== texts.length ||
340
+ !Number.isInteger(sequenceLength) ||
341
+ sequenceLength < 0 ||
342
+ mask.data.length !== batchSize * sequenceLength) {
343
+ throw new Error("Transformers.js tokenizer returned an unexpected mask");
344
+ }
345
+ const truncatedInputIndexes = [];
346
+ for (let inputIndex = 0; inputIndex < batchSize; inputIndex++) {
347
+ let tokenCount = 0;
348
+ const offset = inputIndex * sequenceLength;
349
+ for (let tokenIndex = 0; tokenIndex < sequenceLength; tokenIndex++) {
350
+ if (Number(mask.data[offset + tokenIndex]) !== 0) {
351
+ tokenCount++;
352
+ }
353
+ }
354
+ if (tokenCount > maxInputTokens) {
355
+ truncatedInputIndexes.push(inputIndex);
356
+ }
357
+ }
358
+ return truncatedInputIndexes;
359
+ }
360
+ function resolveExecutionProvider(device) {
361
+ if (device === undefined || device === "auto") {
362
+ // Use the runtime's Node default (CPU). Platform support for an execution
363
+ // provider does not imply that its hardware or shared libraries exist.
364
+ return null;
365
+ }
366
+ if (device === "cpu") {
367
+ return "cpu";
368
+ }
369
+ if (device === "metal" || device === "vulkan") {
370
+ return "webgpu";
371
+ }
372
+ if (device === "cuda") {
373
+ return "cuda";
374
+ }
375
+ return null;
376
+ }
377
+ function formatErrorMessage(error) {
378
+ return error instanceof Error ? error.message : String(error);
379
+ }
380
+ function formatText(text, purpose, entry) {
381
+ const prefix = purpose === "query"
382
+ ? "queryPrefix" in entry
383
+ ? entry.queryPrefix
384
+ : undefined
385
+ : "documentPrefix" in entry
386
+ ? entry.documentPrefix
387
+ : undefined;
388
+ return prefix ? `${prefix}${text}` : text;
389
+ }
390
+ function tensorToVectors(tensor, count, dimension) {
391
+ if (tensor.dims.length !== 2 ||
392
+ tensor.dims[0] !== count ||
393
+ tensor.dims[1] !== dimension ||
394
+ tensor.data.length !== count * dimension) {
395
+ throw new EngineError("Transformers.js returned an unexpected tensor", {
396
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_INVALID_TENSOR",
397
+ context: `expected=${count}x${dimension} actual=${tensor.dims.join("x")}`,
398
+ });
399
+ }
400
+ return Array.from({ length: count }, (_, index) => Array.from({ length: dimension }, (__, offset) => {
401
+ const value = tensor.data[index * dimension + offset];
402
+ if (!Number.isFinite(value)) {
403
+ throw new EngineError("Transformers.js returned a non-finite tensor value", {
404
+ code: "ZVEC_GREP.ENGINE.MODELS.TRANSFORMERS_JS_INVALID_TENSOR",
405
+ context: `index=${index} offset=${offset}`,
406
+ });
407
+ }
408
+ return value;
409
+ }));
410
+ }
411
+ //# sourceMappingURL=transformers-js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers-js.js","sourceRoot":"","sources":["../../../../src/engine/models/backends/transformers-js.ts"],"names":[],"mappings":"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"}