@zvec/zvec-grep 0.2.1 → 0.3.0-rc.1

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 (406) hide show
  1. package/README.md +87 -238
  2. package/bin/zg.exe +3 -0
  3. package/install.cjs +510 -0
  4. package/package.json +22 -72
  5. package/platforms.json +92 -0
  6. package/plugins.cjs +183 -0
  7. package/README_CN.md +0 -230
  8. package/dist/authorization/index.d.ts +0 -7
  9. package/dist/authorization/index.js +0 -7
  10. package/dist/authorization/index.js.map +0 -1
  11. package/dist/authorization/manager.d.ts +0 -8
  12. package/dist/authorization/manager.js +0 -19
  13. package/dist/authorization/manager.js.map +0 -1
  14. package/dist/authorization/operation.d.ts +0 -7
  15. package/dist/authorization/operation.js +0 -50
  16. package/dist/authorization/operation.js.map +0 -1
  17. package/dist/authorization/planner.d.ts +0 -21
  18. package/dist/authorization/planner.js +0 -97
  19. package/dist/authorization/planner.js.map +0 -1
  20. package/dist/authorization/prompt.d.ts +0 -12
  21. package/dist/authorization/prompt.js +0 -63
  22. package/dist/authorization/prompt.js.map +0 -1
  23. package/dist/authorization/store.d.ts +0 -20
  24. package/dist/authorization/store.js +0 -251
  25. package/dist/authorization/store.js.map +0 -1
  26. package/dist/authorization/target.d.ts +0 -15
  27. package/dist/authorization/target.js +0 -49
  28. package/dist/authorization/target.js.map +0 -1
  29. package/dist/authorization/types.d.ts +0 -61
  30. package/dist/authorization/types.js +0 -2
  31. package/dist/authorization/types.js.map +0 -1
  32. package/dist/cli/args.d.ts +0 -5
  33. package/dist/cli/args.js +0 -1207
  34. package/dist/cli/args.js.map +0 -1
  35. package/dist/cli/auth.d.ts +0 -21
  36. package/dist/cli/auth.js +0 -209
  37. package/dist/cli/auth.js.map +0 -1
  38. package/dist/cli/commands.d.ts +0 -4
  39. package/dist/cli/commands.js +0 -697
  40. package/dist/cli/commands.js.map +0 -1
  41. package/dist/cli/errors.d.ts +0 -6
  42. package/dist/cli/errors.js +0 -98
  43. package/dist/cli/errors.js.map +0 -1
  44. package/dist/cli/format/context.d.ts +0 -9
  45. package/dist/cli/format/context.js +0 -786
  46. package/dist/cli/format/context.js.map +0 -1
  47. package/dist/cli/format/debug.d.ts +0 -4
  48. package/dist/cli/format/debug.js +0 -60
  49. package/dist/cli/format/debug.js.map +0 -1
  50. package/dist/cli/format/highlight.d.ts +0 -3
  51. package/dist/cli/format/highlight.js +0 -106
  52. package/dist/cli/format/highlight.js.map +0 -1
  53. package/dist/cli/format/progress.d.ts +0 -13
  54. package/dist/cli/format/progress.js +0 -290
  55. package/dist/cli/format/progress.js.map +0 -1
  56. package/dist/cli/format/range.d.ts +0 -3
  57. package/dist/cli/format/range.js +0 -24
  58. package/dist/cli/format/range.js.map +0 -1
  59. package/dist/cli/format/status.d.ts +0 -81
  60. package/dist/cli/format/status.js +0 -512
  61. package/dist/cli/format/status.js.map +0 -1
  62. package/dist/cli/help.d.ts +0 -1
  63. package/dist/cli/help.js +0 -524
  64. package/dist/cli/help.js.map +0 -1
  65. package/dist/cli/index.d.ts +0 -2
  66. package/dist/cli/index.js +0 -32
  67. package/dist/cli/index.js.map +0 -1
  68. package/dist/cli/install.d.ts +0 -4
  69. package/dist/cli/install.js +0 -1661
  70. package/dist/cli/install.js.map +0 -1
  71. package/dist/cli/managed-rg.d.ts +0 -10
  72. package/dist/cli/managed-rg.js +0 -329
  73. package/dist/cli/managed-rg.js.map +0 -1
  74. package/dist/cli/server-search.d.ts +0 -3
  75. package/dist/cli/server-search.js +0 -12
  76. package/dist/cli/server-search.js.map +0 -1
  77. package/dist/cli/types.d.ts +0 -87
  78. package/dist/cli/types.js +0 -10
  79. package/dist/cli/types.js.map +0 -1
  80. package/dist/cli/version.d.ts +0 -1
  81. package/dist/cli/version.js +0 -13
  82. package/dist/cli/version.js.map +0 -1
  83. package/dist/client/daemon-client.d.ts +0 -31
  84. package/dist/client/daemon-client.js +0 -203
  85. package/dist/client/daemon-client.js.map +0 -1
  86. package/dist/client/mode-router.d.ts +0 -9
  87. package/dist/client/mode-router.js +0 -28
  88. package/dist/client/mode-router.js.map +0 -1
  89. package/dist/client/search-policy.d.ts +0 -11
  90. package/dist/client/search-policy.js +0 -15
  91. package/dist/client/search-policy.js.map +0 -1
  92. package/dist/daemon/backend.d.ts +0 -78
  93. package/dist/daemon/backend.js +0 -1085
  94. package/dist/daemon/backend.js.map +0 -1
  95. package/dist/daemon/change-set.d.ts +0 -30
  96. package/dist/daemon/change-set.js +0 -163
  97. package/dist/daemon/change-set.js.map +0 -1
  98. package/dist/daemon/config.d.ts +0 -24
  99. package/dist/daemon/config.js +0 -88
  100. package/dist/daemon/config.js.map +0 -1
  101. package/dist/daemon/errors.d.ts +0 -5
  102. package/dist/daemon/errors.js +0 -11
  103. package/dist/daemon/errors.js.map +0 -1
  104. package/dist/daemon/http-server.d.ts +0 -30
  105. package/dist/daemon/http-server.js +0 -288
  106. package/dist/daemon/http-server.js.map +0 -1
  107. package/dist/daemon/index-coordinator.d.ts +0 -22
  108. package/dist/daemon/index-coordinator.js +0 -55
  109. package/dist/daemon/index-coordinator.js.map +0 -1
  110. package/dist/daemon/job-scheduler.d.ts +0 -70
  111. package/dist/daemon/job-scheduler.js +0 -366
  112. package/dist/daemon/job-scheduler.js.map +0 -1
  113. package/dist/daemon/logger.d.ts +0 -9
  114. package/dist/daemon/logger.js +0 -53
  115. package/dist/daemon/logger.js.map +0 -1
  116. package/dist/daemon/model-pool.d.ts +0 -45
  117. package/dist/daemon/model-pool.js +0 -187
  118. package/dist/daemon/model-pool.js.map +0 -1
  119. package/dist/daemon/root-lease.d.ts +0 -14
  120. package/dist/daemon/root-lease.js +0 -188
  121. package/dist/daemon/root-lease.js.map +0 -1
  122. package/dist/daemon/root-runtime.d.ts +0 -79
  123. package/dist/daemon/root-runtime.js +0 -337
  124. package/dist/daemon/root-runtime.js.map +0 -1
  125. package/dist/daemon/runtime-manager.d.ts +0 -46
  126. package/dist/daemon/runtime-manager.js +0 -246
  127. package/dist/daemon/runtime-manager.js.map +0 -1
  128. package/dist/daemon/runtime.d.ts +0 -12
  129. package/dist/daemon/runtime.js +0 -102
  130. package/dist/daemon/runtime.js.map +0 -1
  131. package/dist/daemon/server-controller.d.ts +0 -39
  132. package/dist/daemon/server-controller.js +0 -327
  133. package/dist/daemon/server-controller.js.map +0 -1
  134. package/dist/daemon/watch-manager.d.ts +0 -55
  135. package/dist/daemon/watch-manager.js +0 -340
  136. package/dist/daemon/watch-manager.js.map +0 -1
  137. package/dist/daemon/workspace-read-session-cache.d.ts +0 -31
  138. package/dist/daemon/workspace-read-session-cache.js +0 -115
  139. package/dist/daemon/workspace-read-session-cache.js.map +0 -1
  140. package/dist/engine/code-formats.d.ts +0 -3
  141. package/dist/engine/code-formats.js +0 -14
  142. package/dist/engine/code-formats.js.map +0 -1
  143. package/dist/engine/config.d.ts +0 -50
  144. package/dist/engine/config.js +0 -321
  145. package/dist/engine/config.js.map +0 -1
  146. package/dist/engine/errors.d.ts +0 -19
  147. package/dist/engine/errors.js +0 -40
  148. package/dist/engine/errors.js.map +0 -1
  149. package/dist/engine/extraction/code/adapter.d.ts +0 -19
  150. package/dist/engine/extraction/code/adapter.js +0 -24
  151. package/dist/engine/extraction/code/adapter.js.map +0 -1
  152. package/dist/engine/extraction/code/extractor.d.ts +0 -13
  153. package/dist/engine/extraction/code/extractor.js +0 -696
  154. package/dist/engine/extraction/code/extractor.js.map +0 -1
  155. package/dist/engine/extraction/code/families/c-family.d.ts +0 -2
  156. package/dist/engine/extraction/code/families/c-family.js +0 -122
  157. package/dist/engine/extraction/code/families/c-family.js.map +0 -1
  158. package/dist/engine/extraction/code/families/js-ts.d.ts +0 -12
  159. package/dist/engine/extraction/code/families/js-ts.js +0 -118
  160. package/dist/engine/extraction/code/families/js-ts.js.map +0 -1
  161. package/dist/engine/extraction/code/families/metadata.d.ts +0 -8
  162. package/dist/engine/extraction/code/families/metadata.js +0 -86
  163. package/dist/engine/extraction/code/families/metadata.js.map +0 -1
  164. package/dist/engine/extraction/code/families/name-field.d.ts +0 -3
  165. package/dist/engine/extraction/code/families/name-field.js +0 -22
  166. package/dist/engine/extraction/code/families/name-field.js.map +0 -1
  167. package/dist/engine/extraction/code/languages/c.d.ts +0 -1
  168. package/dist/engine/extraction/code/languages/c.js +0 -12
  169. package/dist/engine/extraction/code/languages/c.js.map +0 -1
  170. package/dist/engine/extraction/code/languages/cpp.d.ts +0 -1
  171. package/dist/engine/extraction/code/languages/cpp.js +0 -18
  172. package/dist/engine/extraction/code/languages/cpp.js.map +0 -1
  173. package/dist/engine/extraction/code/languages/go.d.ts +0 -2
  174. package/dist/engine/extraction/code/languages/go.js +0 -70
  175. package/dist/engine/extraction/code/languages/go.js.map +0 -1
  176. package/dist/engine/extraction/code/languages/java.d.ts +0 -1
  177. package/dist/engine/extraction/code/languages/java.js +0 -17
  178. package/dist/engine/extraction/code/languages/java.js.map +0 -1
  179. package/dist/engine/extraction/code/languages/javascript.d.ts +0 -2
  180. package/dist/engine/extraction/code/languages/javascript.js +0 -23
  181. package/dist/engine/extraction/code/languages/javascript.js.map +0 -1
  182. package/dist/engine/extraction/code/languages/python.d.ts +0 -2
  183. package/dist/engine/extraction/code/languages/python.js +0 -52
  184. package/dist/engine/extraction/code/languages/python.js.map +0 -1
  185. package/dist/engine/extraction/code/languages/rust.d.ts +0 -2
  186. package/dist/engine/extraction/code/languages/rust.js +0 -25
  187. package/dist/engine/extraction/code/languages/rust.js.map +0 -1
  188. package/dist/engine/extraction/code/languages/typescript.d.ts +0 -2
  189. package/dist/engine/extraction/code/languages/typescript.js +0 -37
  190. package/dist/engine/extraction/code/languages/typescript.js.map +0 -1
  191. package/dist/engine/extraction/code/tree-sitter/grammar.d.ts +0 -4
  192. package/dist/engine/extraction/code/tree-sitter/grammar.js +0 -49
  193. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +0 -1
  194. package/dist/engine/extraction/code/tree-sitter/nodes.d.ts +0 -3
  195. package/dist/engine/extraction/code/tree-sitter/nodes.js +0 -27
  196. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +0 -1
  197. package/dist/engine/extraction/code/tree-sitter/parser.d.ts +0 -2
  198. package/dist/engine/extraction/code/tree-sitter/parser.js +0 -31
  199. package/dist/engine/extraction/code/tree-sitter/parser.js.map +0 -1
  200. package/dist/engine/extraction/ids.d.ts +0 -1
  201. package/dist/engine/extraction/ids.js +0 -5
  202. package/dist/engine/extraction/ids.js.map +0 -1
  203. package/dist/engine/extraction/image/extractor.d.ts +0 -5
  204. package/dist/engine/extraction/image/extractor.js +0 -35
  205. package/dist/engine/extraction/image/extractor.js.map +0 -1
  206. package/dist/engine/extraction/index.d.ts +0 -4
  207. package/dist/engine/extraction/index.js +0 -3
  208. package/dist/engine/extraction/index.js.map +0 -1
  209. package/dist/engine/extraction/markdown/extractor.d.ts +0 -7
  210. package/dist/engine/extraction/markdown/extractor.js +0 -362
  211. package/dist/engine/extraction/markdown/extractor.js.map +0 -1
  212. package/dist/engine/extraction/runtime.d.ts +0 -9
  213. package/dist/engine/extraction/runtime.js +0 -37
  214. package/dist/engine/extraction/runtime.js.map +0 -1
  215. package/dist/engine/extraction/source.d.ts +0 -18
  216. package/dist/engine/extraction/source.js +0 -22
  217. package/dist/engine/extraction/source.js.map +0 -1
  218. package/dist/engine/extraction/text/extractor.d.ts +0 -7
  219. package/dist/engine/extraction/text/extractor.js +0 -168
  220. package/dist/engine/extraction/text/extractor.js.map +0 -1
  221. package/dist/engine/extraction/types.d.ts +0 -4
  222. package/dist/engine/extraction/types.js +0 -2
  223. package/dist/engine/extraction/types.js.map +0 -1
  224. package/dist/engine/extraction/vector-content.d.ts +0 -5
  225. package/dist/engine/extraction/vector-content.js +0 -83
  226. package/dist/engine/extraction/vector-content.js.map +0 -1
  227. package/dist/engine/file-size-policy.d.ts +0 -6
  228. package/dist/engine/file-size-policy.js +0 -20
  229. package/dist/engine/file-size-policy.js.map +0 -1
  230. package/dist/engine/file-type.d.ts +0 -15
  231. package/dist/engine/file-type.js +0 -152
  232. package/dist/engine/file-type.js.map +0 -1
  233. package/dist/engine/index-status.d.ts +0 -9
  234. package/dist/engine/index-status.js +0 -38
  235. package/dist/engine/index-status.js.map +0 -1
  236. package/dist/engine/manifest.d.ts +0 -13
  237. package/dist/engine/manifest.js +0 -124
  238. package/dist/engine/manifest.js.map +0 -1
  239. package/dist/engine/models/backends/llama-cpp.d.ts +0 -99
  240. package/dist/engine/models/backends/llama-cpp.js +0 -511
  241. package/dist/engine/models/backends/llama-cpp.js.map +0 -1
  242. package/dist/engine/models/backends/model2vec-runtime.d.ts +0 -63
  243. package/dist/engine/models/backends/model2vec-runtime.js +0 -112
  244. package/dist/engine/models/backends/model2vec-runtime.js.map +0 -1
  245. package/dist/engine/models/backends/model2vec-tokenizer.d.ts +0 -2
  246. package/dist/engine/models/backends/model2vec-tokenizer.js +0 -42
  247. package/dist/engine/models/backends/model2vec-tokenizer.js.map +0 -1
  248. package/dist/engine/models/backends/model2vec-worker-pool.d.ts +0 -25
  249. package/dist/engine/models/backends/model2vec-worker-pool.js +0 -264
  250. package/dist/engine/models/backends/model2vec-worker-pool.js.map +0 -1
  251. package/dist/engine/models/backends/model2vec-worker.d.ts +0 -1
  252. package/dist/engine/models/backends/model2vec-worker.js +0 -41
  253. package/dist/engine/models/backends/model2vec-worker.js.map +0 -1
  254. package/dist/engine/models/backends/model2vec.d.ts +0 -40
  255. package/dist/engine/models/backends/model2vec.js +0 -311
  256. package/dist/engine/models/backends/model2vec.js.map +0 -1
  257. package/dist/engine/models/backends/qwen.d.ts +0 -44
  258. package/dist/engine/models/backends/qwen.js +0 -411
  259. package/dist/engine/models/backends/qwen.js.map +0 -1
  260. package/dist/engine/models/backends/transformers-js.d.ts +0 -87
  261. package/dist/engine/models/backends/transformers-js.js +0 -316
  262. package/dist/engine/models/backends/transformers-js.js.map +0 -1
  263. package/dist/engine/models/catalog.d.ts +0 -231
  264. package/dist/engine/models/catalog.js +0 -218
  265. package/dist/engine/models/catalog.js.map +0 -1
  266. package/dist/engine/models/download-progress.d.ts +0 -15
  267. package/dist/engine/models/download-progress.js +0 -48
  268. package/dist/engine/models/download-progress.js.map +0 -1
  269. package/dist/engine/models/embeddings.d.ts +0 -67
  270. package/dist/engine/models/embeddings.js +0 -125
  271. package/dist/engine/models/embeddings.js.map +0 -1
  272. package/dist/engine/models/factory.d.ts +0 -2
  273. package/dist/engine/models/factory.js +0 -51
  274. package/dist/engine/models/factory.js.map +0 -1
  275. package/dist/engine/models/index.d.ts +0 -4
  276. package/dist/engine/models/index.js +0 -5
  277. package/dist/engine/models/index.js.map +0 -1
  278. package/dist/engine/models/ranking.d.ts +0 -19
  279. package/dist/engine/models/ranking.js +0 -2
  280. package/dist/engine/models/ranking.js.map +0 -1
  281. package/dist/engine/models/resolution.d.ts +0 -8
  282. package/dist/engine/models/resolution.js +0 -22
  283. package/dist/engine/models/resolution.js.map +0 -1
  284. package/dist/engine/pipeline/indexing/index.d.ts +0 -14
  285. package/dist/engine/pipeline/indexing/index.js +0 -1061
  286. package/dist/engine/pipeline/indexing/index.js.map +0 -1
  287. package/dist/engine/pipeline/indexing/input-budget.d.ts +0 -2
  288. package/dist/engine/pipeline/indexing/input-budget.js +0 -51
  289. package/dist/engine/pipeline/indexing/input-budget.js.map +0 -1
  290. package/dist/engine/pipeline/indexing/root-paths.d.ts +0 -7
  291. package/dist/engine/pipeline/indexing/root-paths.js +0 -148
  292. package/dist/engine/pipeline/indexing/root-paths.js.map +0 -1
  293. package/dist/engine/pipeline/indexing/scanner/index.d.ts +0 -14
  294. package/dist/engine/pipeline/indexing/scanner/index.js +0 -776
  295. package/dist/engine/pipeline/indexing/scanner/index.js.map +0 -1
  296. package/dist/engine/pipeline/search/index.d.ts +0 -12
  297. package/dist/engine/pipeline/search/index.js +0 -811
  298. package/dist/engine/pipeline/search/index.js.map +0 -1
  299. package/dist/engine/service/index.d.ts +0 -3
  300. package/dist/engine/service/index.js +0 -2
  301. package/dist/engine/service/index.js.map +0 -1
  302. package/dist/engine/service/lexical.d.ts +0 -28
  303. package/dist/engine/service/lexical.js +0 -446
  304. package/dist/engine/service/lexical.js.map +0 -1
  305. package/dist/engine/service/root.d.ts +0 -15
  306. package/dist/engine/service/root.js +0 -57
  307. package/dist/engine/service/root.js.map +0 -1
  308. package/dist/engine/service/structure-enrichment.d.ts +0 -8
  309. package/dist/engine/service/structure-enrichment.js +0 -178
  310. package/dist/engine/service/structure-enrichment.js.map +0 -1
  311. package/dist/engine/service/types.d.ts +0 -210
  312. package/dist/engine/service/types.js +0 -2
  313. package/dist/engine/service/types.js.map +0 -1
  314. package/dist/engine/service/workspace-index.d.ts +0 -26
  315. package/dist/engine/service/workspace-index.js +0 -157
  316. package/dist/engine/service/workspace-index.js.map +0 -1
  317. package/dist/engine/service/zvec-grep.d.ts +0 -13
  318. package/dist/engine/service/zvec-grep.js +0 -1393
  319. package/dist/engine/service/zvec-grep.js.map +0 -1
  320. package/dist/engine/storage/index.d.ts +0 -53
  321. package/dist/engine/storage/index.js +0 -3
  322. package/dist/engine/storage/index.js.map +0 -1
  323. package/dist/engine/storage/layout.d.ts +0 -10
  324. package/dist/engine/storage/layout.js +0 -29
  325. package/dist/engine/storage/layout.js.map +0 -1
  326. package/dist/engine/storage/zvec.d.ts +0 -4
  327. package/dist/engine/storage/zvec.js +0 -976
  328. package/dist/engine/storage/zvec.js.map +0 -1
  329. package/dist/engine/types.d.ts +0 -303
  330. package/dist/engine/types.js +0 -14
  331. package/dist/engine/types.js.map +0 -1
  332. package/dist/engine/utils/daemon-lease.d.ts +0 -17
  333. package/dist/engine/utils/daemon-lease.js +0 -175
  334. package/dist/engine/utils/daemon-lease.js.map +0 -1
  335. package/dist/engine/utils/file-selection.d.ts +0 -10
  336. package/dist/engine/utils/file-selection.js +0 -157
  337. package/dist/engine/utils/file-selection.js.map +0 -1
  338. package/dist/engine/utils/glob.d.ts +0 -9
  339. package/dist/engine/utils/glob.js +0 -208
  340. package/dist/engine/utils/glob.js.map +0 -1
  341. package/dist/engine/utils/hash.d.ts +0 -2
  342. package/dist/engine/utils/hash.js +0 -8
  343. package/dist/engine/utils/hash.js.map +0 -1
  344. package/dist/engine/utils/json.d.ts +0 -8
  345. package/dist/engine/utils/json.js +0 -83
  346. package/dist/engine/utils/json.js.map +0 -1
  347. package/dist/engine/utils/lock.d.ts +0 -19
  348. package/dist/engine/utils/lock.js +0 -254
  349. package/dist/engine/utils/lock.js.map +0 -1
  350. package/dist/engine/utils/path.d.ts +0 -4
  351. package/dist/engine/utils/path.js +0 -18
  352. package/dist/engine/utils/path.js.map +0 -1
  353. package/dist/engine/utils/timing.d.ts +0 -19
  354. package/dist/engine/utils/timing.js +0 -87
  355. package/dist/engine/utils/timing.js.map +0 -1
  356. package/dist/index-progress.d.ts +0 -10
  357. package/dist/index-progress.js +0 -159
  358. package/dist/index-progress.js.map +0 -1
  359. package/dist/index.d.ts +0 -6
  360. package/dist/index.js +0 -4
  361. package/dist/index.js.map +0 -1
  362. package/dist/mcp/http-transport.d.ts +0 -27
  363. package/dist/mcp/http-transport.js +0 -182
  364. package/dist/mcp/http-transport.js.map +0 -1
  365. package/dist/mcp/input-normalization.d.ts +0 -38
  366. package/dist/mcp/input-normalization.js +0 -104
  367. package/dist/mcp/input-normalization.js.map +0 -1
  368. package/dist/mcp/progress-heartbeat.d.ts +0 -17
  369. package/dist/mcp/progress-heartbeat.js +0 -46
  370. package/dist/mcp/progress-heartbeat.js.map +0 -1
  371. package/dist/mcp/request-metadata.d.ts +0 -2
  372. package/dist/mcp/request-metadata.js +0 -11
  373. package/dist/mcp/request-metadata.js.map +0 -1
  374. package/dist/mcp/request-state.d.ts +0 -40
  375. package/dist/mcp/request-state.js +0 -210
  376. package/dist/mcp/request-state.js.map +0 -1
  377. package/dist/mcp/result-format.d.ts +0 -13
  378. package/dist/mcp/result-format.js +0 -75
  379. package/dist/mcp/result-format.js.map +0 -1
  380. package/dist/mcp/schemas.d.ts +0 -664
  381. package/dist/mcp/schemas.js +0 -510
  382. package/dist/mcp/schemas.js.map +0 -1
  383. package/dist/mcp/stdio-bridge.d.ts +0 -14
  384. package/dist/mcp/stdio-bridge.js +0 -178
  385. package/dist/mcp/stdio-bridge.js.map +0 -1
  386. package/dist/mcp/tools.d.ts +0 -153
  387. package/dist/mcp/tools.js +0 -482
  388. package/dist/mcp/tools.js.map +0 -1
  389. package/dist/mcp/toolset.d.ts +0 -5
  390. package/dist/mcp/toolset.js +0 -12
  391. package/dist/mcp/toolset.js.map +0 -1
  392. package/dist/observability/trace-context.d.ts +0 -11
  393. package/dist/observability/trace-context.js +0 -138
  394. package/dist/observability/trace-context.js.map +0 -1
  395. package/dist/prompts/zvec-grep-guidance.d.ts +0 -2
  396. package/dist/prompts/zvec-grep-guidance.js +0 -9
  397. package/dist/prompts/zvec-grep-guidance.js.map +0 -1
  398. package/docs/01-agents.md +0 -209
  399. package/docs/02-cli.md +0 -246
  400. package/docs/03-mcp.md +0 -185
  401. package/docs/04-pipeline.md +0 -226
  402. package/docs/05-architecture.md +0 -86
  403. package/docs/06-server.md +0 -220
  404. package/docs/07-embedding.md +0 -203
  405. package/docs/08-roadmap.md +0 -85
  406. package/docs/README.md +0 -53
package/platforms.json ADDED
@@ -0,0 +1,92 @@
1
+ [
2
+ {
3
+ "target": "darwin-arm64",
4
+ "package": "@zvec/zvec-grep-darwin-arm64",
5
+ "os": "darwin",
6
+ "cpu": "arm64",
7
+ "binary": "zg"
8
+ },
9
+ {
10
+ "target": "darwin-x64",
11
+ "package": "@zvec/zvec-grep-darwin-x64",
12
+ "os": "darwin",
13
+ "cpu": "x64",
14
+ "binary": "zg"
15
+ },
16
+ {
17
+ "target": "linux-x64-gnu",
18
+ "package": "@zvec/zvec-grep-linux-x64-gnu",
19
+ "os": "linux",
20
+ "cpu": "x64",
21
+ "libc": "glibc",
22
+ "binary": "zg",
23
+ "defaultVariant": "cuda",
24
+ "components": [
25
+ {
26
+ "package": "@zvec/zvec-grep-linux-x64-gnu-ggml-cuda13",
27
+ "file": "lib/libggml-cuda.so",
28
+ "payload": "lib/libggml-cuda.so"
29
+ },
30
+ {
31
+ "package": "@zvec/zvec-grep-linux-x64-gnu-ggml-cuda12",
32
+ "file": "lib/cuda12/libggml-cuda.so",
33
+ "payload": "lib/cuda12/libggml-cuda.so"
34
+ },
35
+ {
36
+ "package": "@zvec/zvec-grep-linux-x64-gnu-ort-cuda-part1",
37
+ "file": "lib/libonnxruntime_providers_cuda.so",
38
+ "payload": "parts/ort-cuda.part1"
39
+ },
40
+ {
41
+ "package": "@zvec/zvec-grep-linux-x64-gnu-ort-cuda-part2",
42
+ "file": "lib/libonnxruntime_providers_cuda.so",
43
+ "payload": "parts/ort-cuda.part2"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "target": "linux-arm64-gnu",
49
+ "package": "@zvec/zvec-grep-linux-arm64-gnu",
50
+ "os": "linux",
51
+ "cpu": "arm64",
52
+ "libc": "glibc",
53
+ "binary": "zg"
54
+ },
55
+ {
56
+ "target": "win32-x64-msvc",
57
+ "package": "@zvec/zvec-grep-win32-x64-msvc",
58
+ "os": "win32",
59
+ "cpu": "x64",
60
+ "binary": "zg.exe",
61
+ "defaultVariant": "cuda",
62
+ "components": [
63
+ {
64
+ "package": "@zvec/zvec-grep-win32-x64-msvc-ggml-cuda13",
65
+ "file": "lib/ggml-cuda.dll",
66
+ "payload": "lib/ggml-cuda.dll"
67
+ },
68
+ {
69
+ "package": "@zvec/zvec-grep-win32-x64-msvc-ggml-cuda12",
70
+ "file": "lib/cuda12/ggml-cuda.dll",
71
+ "payload": "lib/cuda12/ggml-cuda.dll"
72
+ },
73
+ {
74
+ "package": "@zvec/zvec-grep-win32-x64-msvc-ort-cuda-part1",
75
+ "file": "lib/onnxruntime_providers_cuda.dll",
76
+ "payload": "parts/ort-cuda.part1"
77
+ },
78
+ {
79
+ "package": "@zvec/zvec-grep-win32-x64-msvc-ort-cuda-part2",
80
+ "file": "lib/onnxruntime_providers_cuda.dll",
81
+ "payload": "parts/ort-cuda.part2"
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "target": "win32-arm64-msvc",
87
+ "package": "@zvec/zvec-grep-win32-arm64-msvc",
88
+ "os": "win32",
89
+ "cpu": "arm64",
90
+ "binary": "zg.exe"
91
+ }
92
+ ]
package/plugins.cjs ADDED
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ // Installation-only transport. Normal zg execution never invokes Node or npm.
4
+ const { createHash } = require("crypto");
5
+ const { spawnSync } = require("child_process");
6
+ const { closeSync, existsSync, lstatSync, mkdirSync, mkdtempSync,
7
+ openSync, readSync, renameSync, rmSync } = require("fs");
8
+ const { homedir } = require("os");
9
+ const { join, resolve } = require("path");
10
+
11
+ // Shared by packaging, publication preflight and plugin validation. npm sends
12
+ // tarballs as base64 in JSON: 180 MiB becomes 240 MiB before metadata/provenance.
13
+ // This is a conservative project budget, not a documented registry maximum;
14
+ // npm rejected our 202.4 MB Windows ORT archive with HTTP 413.
15
+ const MAX_NPM_TARBALL_BYTES = 180 * 1024 * 1024;
16
+
17
+ function hashFile(path, algorithm = "sha256", encoding = "hex") {
18
+ const hash = createHash(algorithm);
19
+ const fd = openSync(path, "r");
20
+ const buffer = Buffer.allocUnsafe(1024 * 1024);
21
+ try {
22
+ let count;
23
+ while ((count = readSync(fd, buffer, 0, buffer.length, null))) hash.update(buffer.subarray(0, count));
24
+ } finally { closeSync(fd); }
25
+ return hash.digest(encoding);
26
+ }
27
+
28
+ function coreIdentity(target, version, files) {
29
+ return createHash("sha256").update(JSON.stringify({ target, version,
30
+ files: Object.fromEntries(Object.entries(files).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) })).digest("hex");
31
+ }
32
+
33
+ function packageFilename(name, version) {
34
+ return `${name.replace(/^@/, "").replace(/\//g, "-")}-${version}.tgz`;
35
+ }
36
+
37
+ function validHash(value) {
38
+ return value && Number.isSafeInteger(value.bytes) && value.bytes >= 0 && /^[a-f0-9]{64}$/.test(value.sha256);
39
+ }
40
+
41
+ function validatePlugins(manifest, entry, version, coreId) {
42
+ if (manifest.schemaVersion !== 1 || manifest.target !== entry.target || manifest.version !== version ||
43
+ manifest.coreId !== coreId || !/^[a-f0-9]{64}$/.test(coreId) ||
44
+ !Array.isArray(manifest.components) || !entry.components?.length ||
45
+ manifest.components.length !== entry.components.length || !manifest.files) {
46
+ throw new Error("invalid plugin manifest identity/core ABI");
47
+ }
48
+ for (const [index, expected] of entry.components.entries()) {
49
+ const component = manifest.components[index];
50
+ if (component.package !== expected.package || component.version !== version ||
51
+ component.file !== expected.file || component.payload !== expected.payload ||
52
+ component.tarball !== packageFilename(expected.package, version) ||
53
+ !/^sha512-[A-Za-z0-9+/]{86}==$/.test(component.integrity) ||
54
+ !Number.isSafeInteger(component.archiveBytes) || component.archiveBytes <= 0 ||
55
+ component.archiveBytes > MAX_NPM_TARBALL_BYTES || !validHash(component.checksum) ||
56
+ !validHash(manifest.files[expected.file])) {
57
+ throw new Error(`invalid pinned plugin: ${expected.package}`);
58
+ }
59
+ }
60
+ if (JSON.stringify(Object.keys(manifest.files).sort()) !==
61
+ JSON.stringify([...new Set(entry.components.map((component) => component.file))].sort())) {
62
+ throw new Error("plugin manifest contains unexpected runtime files");
63
+ }
64
+ return manifest;
65
+ }
66
+
67
+ function settings(env = process.env) {
68
+ const mode = env.ZG_INSTALL_ACCELERATOR || "auto";
69
+ if (!["auto", "cpu", "cuda"].includes(mode)) throw new Error("ZG_INSTALL_ACCELERATOR must be auto, cpu or cuda");
70
+ return { mode,
71
+ directory: env.ZG_PLUGIN_DIR ? resolve(env.ZG_PLUGIN_DIR) : undefined,
72
+ cache: resolve(env.ZG_PLUGIN_CACHE || join(env.npm_config_cache || join(homedir(), ".npm"), "zg-plugins")),
73
+ offline: [env.ZG_INSTALL_OFFLINE, env.npm_config_offline].some((value) => /^(true|1)$/i.test(value || "")),
74
+ };
75
+ }
76
+
77
+ function detectNvidia() {
78
+ const result = spawnSync("nvidia-smi", ["--query-gpu=name,driver_version", "--format=csv,noheader"], {
79
+ encoding: "utf8", timeout: 5000, maxBuffer: 64 * 1024, windowsHide: true,
80
+ });
81
+ // A download hint, never proof that CUDA/cuDNN or a particular plugin works.
82
+ return result.status === 0 && Boolean(result.stdout?.trim());
83
+ }
84
+
85
+ function verifyArchive(path, component) {
86
+ const metadata = lstatSync(path);
87
+ if (!metadata.isFile() || metadata.size !== component.archiveBytes ||
88
+ `sha512-${hashFile(path, "sha512", "base64")}` !== component.integrity) {
89
+ throw new Error(`plugin archive integrity mismatch: ${component.package}`);
90
+ }
91
+ }
92
+
93
+ function download(component, directory, env = process.env) {
94
+ const args = ["pack", `${component.package}@${component.version}`, "--ignore-scripts", "--json",
95
+ "--pack-destination", directory, "--fetch-retries=1", "--fetch-timeout=60000"];
96
+ // Use npm itself for registry, proxy, authentication, CA and cache handling.
97
+ // Keeping the invocation's cwd also preserves its project .npmrc. Never run a
98
+ // nested npm install or mutate the caller's node_modules/package-lock.
99
+ const npmCli = env.npm_execpath;
100
+ if (!npmCli || !existsSync(npmCli)) throw new Error("online plugin installation must run through npm install/rebuild");
101
+ const version = spawnSync(process.execPath, [npmCli, "--version"], {
102
+ encoding: "utf8", timeout: 10000, maxBuffer: 64 * 1024, windowsHide: true,
103
+ });
104
+ if (version.status !== 0 || !(Number(version.stdout.trim().split(".")[0]) >= 7)) {
105
+ throw new Error("online plugin downloads require npm 7+ (--pack-destination); use ZG_PLUGIN_DIR for offline installation");
106
+ }
107
+ const result = spawnSync(process.execPath, [npmCli, ...args], {
108
+ cwd: env.INIT_CWD || process.cwd(), env: { ...env, npm_config_ignore_scripts: "true" },
109
+ encoding: "utf8", maxBuffer: 1024 * 1024, timeout: 180000, windowsHide: true,
110
+ });
111
+ if (result.error || result.status !== 0) {
112
+ // Do not echo registry credentials or arbitrary npm configuration.
113
+ throw new Error(`npm pack failed for ${component.package} (status ${result.status ?? result.error?.code}); check npm registry/network settings`);
114
+ }
115
+ return join(directory, component.tarball);
116
+ }
117
+
118
+ function componentArchive(component, manifest, config, fetch = download) {
119
+ // An explicit local artifact directory is authoritative: no registry/cache
120
+ // fallback may hide missing files in CI or an incomplete offline release.
121
+ if (config.directory) {
122
+ const path = join(config.directory, component.tarball);
123
+ verifyArchive(path, component);
124
+ return path;
125
+ }
126
+ // Hash the full identity into one path segment rather than nesting two long
127
+ // hashes and an npm filename (important for Windows tool path limits).
128
+ const directory = join(config.cache, createHash("sha256").update(JSON.stringify([
129
+ manifest.target, manifest.version, manifest.coreId, component.integrity,
130
+ ])).digest("hex"));
131
+ mkdirSync(directory, { recursive: true });
132
+ const cached = join(directory, "archive.tgz");
133
+ if (existsSync(cached)) { verifyArchive(cached, component); return cached; }
134
+ if (config.offline) throw new Error(`offline plugin cache miss: ${component.package}`);
135
+ const temporary = mkdtempSync(join(directory, ".download-"));
136
+ try {
137
+ const path = fetch(component, temporary);
138
+ verifyArchive(path, component);
139
+ // Concurrent installs can share the immutable content-addressed archive.
140
+ if (!existsSync(cached)) {
141
+ try { renameSync(path, cached); }
142
+ catch (error) { if (!existsSync(cached)) throw error; }
143
+ }
144
+ verifyArchive(cached, component);
145
+ return cached;
146
+ } finally { rmSync(temporary, { recursive: true, force: true }); }
147
+ }
148
+
149
+ function archiveJson(archive, name) {
150
+ const result = spawnSync("tar", ["-xOf", archive, `package/${name}`], {
151
+ encoding: "utf8", timeout: 60000, maxBuffer: 1024 * 1024, windowsHide: true,
152
+ });
153
+ if (result.error || result.status !== 0) throw new Error(`cannot read ${name} from plugin archive`);
154
+ return JSON.parse(result.stdout);
155
+ }
156
+
157
+ function extractPayload(archive, component, manifest, destination) {
158
+ // Only read the pinned regular payload into our own destination; never
159
+ // extract archive paths, links, permissions or lifecycle scripts onto disk.
160
+ const metadata = archiveJson(archive, "package.json");
161
+ const checksums = archiveJson(archive, "checksums.json");
162
+ if (metadata.name !== component.package || metadata.version !== manifest.version ||
163
+ checksums.schemaVersion !== 1 || checksums.target !== manifest.target ||
164
+ checksums.component !== component.package ||
165
+ JSON.stringify(Object.keys(checksums.files || {})) !== JSON.stringify([component.payload]) ||
166
+ checksums.files[component.payload].sha256 !== component.checksum.sha256 ||
167
+ checksums.files[component.payload].bytes !== component.checksum.bytes) {
168
+ throw new Error(`plugin payload metadata mismatch: ${component.package}`);
169
+ }
170
+ const fd = openSync(destination, "wx", 0o644);
171
+ try {
172
+ const result = spawnSync("tar", ["-xOf", archive, `package/${component.payload}`], {
173
+ stdio: ["ignore", fd, "pipe"], timeout: 180000, maxBuffer: 64 * 1024, windowsHide: true,
174
+ });
175
+ if (result.error || result.status !== 0) throw new Error(`cannot extract plugin payload: ${component.package}`);
176
+ } finally { closeSync(fd); }
177
+ if (lstatSync(destination).size !== component.checksum.bytes || hashFile(destination) !== component.checksum.sha256) {
178
+ throw new Error(`plugin payload checksum mismatch: ${component.package}`);
179
+ }
180
+ }
181
+
182
+ module.exports = { MAX_NPM_TARBALL_BYTES, coreIdentity, packageFilename, validHash, validatePlugins, settings,
183
+ detectNvidia, componentArchive, extractPayload, hashFile, verifyArchive };
package/README_CN.md DELETED
@@ -1,230 +0,0 @@
1
- <p align="right">
2
- <a href="./README.md">English</a> | 中文
3
- </p>
4
-
5
- <div align="center">
6
- <picture>
7
- <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/zg-logo-dark.svg">
8
- <img src="./.github/assets/zg-logo.svg" width="150" alt="zg logo" />
9
- </picture>
10
- <p><strong>Know the words—or don’t. Just zg.</strong></p>
11
- <p>面向人与 Agent 的本地优先统一检索层。</p>
12
-
13
- <p>
14
- <a href="https://www.npmjs.com/package/@zvec/zvec-grep"><img src="https://img.shields.io/npm/v/@zvec/zvec-grep.svg" alt="npm 版本" /></a>
15
- <a href="https://github.com/zvec-ai/zvec-grep/actions/workflows/ci.yml"><img src="https://github.com/zvec-ai/zvec-grep/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
16
- <a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" alt="Apache 2.0 许可证" /></a>
17
- <img src="https://img.shields.io/badge/node-%3E%3D22-blue.svg" alt="Node.js 22 或更新版本" />
18
- </p>
19
-
20
- <p>
21
- <a href="#tour">🎬 <strong>功能演示</strong></a> |
22
- <a href="#features">💫 <strong>核心特性</strong></a> |
23
- <a href="#try-it-yourself">🚀 <strong>动手体验</strong></a> |
24
- <a href="./docs/README.md">📚 <strong>文档</strong></a> |
25
- <a href="#benchmarks">📊 <strong>性能测试</strong></a> |
26
- <a href="#community">🤝 <strong>社区</strong></a>
27
- </p>
28
- </div>
29
-
30
- **zg**(**z**vec-**g**rep)将 ripgrep、BM25 与向量检索统一在一个
31
- [本地优先的检索入口](./docs/05-architecture.md)中。既可以由人在终端中搜索,
32
- 也可以让 Agent 根据问题选择合适的本地检索方式。
33
-
34
- <a id="tour"></a>
35
-
36
- ## 🎬 功能演示
37
-
38
- <div align="center">
39
- <picture>
40
- <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/zvec-grep-tour-dark.gif">
41
- <img src="./.github/assets/zvec-grep-tour.gif" width="1000" alt="安装 Agent 集成、为工作区建索引并让 Agent 使用 zvec-grep 检索本地内容" />
42
- </picture>
43
- </div>
44
-
45
- <a id="features"></a>
46
-
47
- ## 💫 为什么选择 zg?
48
-
49
- - **人与 Agent 开箱即用**:安装一次、索引一次,即可在 macOS、Linux 和
50
- Windows 上通过 CLI 或 Agent 复用同一个工作区。
51
- - **不止关键词搜索**:先按语义发现内容、按相关性排序,再在需要时使用精确文本
52
- 或正则完成验证。
53
- - **多格式检索**:搜索源代码、文档和结构化数据,同时保留有用的内容结构与
54
- 来源位置。
55
- - **更少搜索,更少上下文**:经过排序并保留来源的结果,可以减少工具调用、
56
- Token 消耗与无关噪声,更快找到所需证据。
57
- - **默认本地运行**:文件、索引与本地模型都留在本机;只有经过你的授权,远程
58
- Embedding 服务才能接收数据。
59
-
60
- <a id="try-it-yourself"></a>
61
-
62
- ## 🚀 动手体验
63
-
64
- ### 1. 准备示例书架
65
-
66
- ```bash
67
- # 需要 Node.js 22 或更新版本。
68
- npm install -g @zvec/zvec-grep
69
-
70
- mkdir zg-mystery && cd zg-mystery
71
- curl --retry 3 --retry-all-errors --progress-bar -fL \
72
- -o alice-in-wonderland.txt https://raw.githubusercontent.com/GITenberg/Alice-s-Adventures-in-Wonderland_11/master/11.txt \
73
- -o sherlock-holmes.txt https://raw.githubusercontent.com/GITenberg/The-Memoirs-of-Sherlock-Holmes_834/master/834.txt
74
-
75
- zg index --embedding local/potion-retrieval-32m
76
- ```
77
-
78
- ### 2. 选择检索方式
79
-
80
- #### Agent:通过 OpenCode 提问
81
-
82
- 配置好 [OpenCode](https://opencode.ai/) 后:
83
-
84
- ```bash
85
- zg install --target opencode --yes
86
- opencode models
87
- opencode run --model opencode/nemotron-3-ultra-free \
88
- "An unseen creature left a few marks. What did the detective infer? Cite local evidence."
89
- ```
90
-
91
- 免费模型的可用性可能变化。请通过 `opencode models` 检查,并将示例模型
92
- 替换为当前环境中可用的模型。
93
-
94
- Prompt 中没有指定任何工具,OpenCode 会自主选择 zg。
95
-
96
- <details>
97
- <summary><strong>展开查看完整 Agent 调用与回答</strong></summary>
98
-
99
- ```text
100
- ⚙ zvec_grep_zvec_grep_search {"root":".../zg-mystery","query":"An unseen creature left a few marks. What did the detective infer?","fts":["marks","unseen creature","inferred","detective"],"fuse":true}
101
- → Read sherlock-holmes.txt [offset=5440, limit=120]
102
-
103
- Answer:
104
- The detective is Sherlock Holmes in *The Adventure of the Crooked Man*.
105
- From the animal's foot-marks, he inferred:
106
-
107
- - It was not a dog, cat, monkey, or other familiar creature: its print had
108
- five foot-pads, long nails, and was nearly as large as a dessert-spoon
109
- (sherlock-holmes.txt:5479-5486).
110
- - It had a long body and very short legs: nearly two feet long, but with a
111
- stride of only about three inches (sherlock-holmes.txt:5497-5502).
112
- - It was carnivorous because it climbed the curtain toward a canary's cage
113
- (sherlock-holmes.txt:5509-5510).
114
- - It was probably from the weasel or stoat tribe, though unusually large
115
- (sherlock-holmes.txt:5514-5516).
116
-
117
- Holmes also inferred that a man entered through the window with it and later
118
- left with the key (sherlock-holmes.txt:5464-5470, 5527-5528).
119
- ```
120
-
121
- </details>
122
-
123
- #### 用户:直接检索
124
-
125
- 不通过 Agent,直接搜索同一个书架:
126
-
127
- ```bash
128
- zg query --human "An unseen creature left a few marks. What did the detective infer?" --limit 3
129
- ```
130
-
131
- zg 会将 `sherlock-holmes.txt` 中的相关段落排在
132
- `alice-in-wonderland.txt` 前面。
133
-
134
- <a id="benchmarks"></a>
135
-
136
- ## 📊 性能测试
137
-
138
- 每项测试均采用配对 A/B 评测:任务、Agent/模型、Prompt、环境和
139
- 资源限制保持一致,仅 zg 访问权限及使用说明不同。
140
-
141
- 完整结果和复现细节参见[性能测试文档](./benchmarks/README_CN.md)。
142
-
143
- ### 1. 跨领域 Agent Benchmark
144
-
145
- [SWE-QA-Bench](./benchmarks/swe-qa-bench/README_CN.md) 使用 Claude Code 与
146
- Claude Opus 5(high 推理强度);
147
- [BrowseComp-Plus](./benchmarks/browse-comp-plus/README_CN.md) 使用 Codex
148
- gpt-5.6-sol 与 medium 推理强度。两项测试中的 zg
149
- Profile 均使用 Qwen3.7 Text Embedding。
150
-
151
- <p align="center">
152
- <picture>
153
- <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/benchmark-overall-retrieval-indexed-v4-dark.svg">
154
- <source media="(prefers-color-scheme: light)" srcset="./.github/assets/benchmark-overall-retrieval-indexed-v4-light.svg">
155
- <img src="./.github/assets/benchmark-overall-retrieval-indexed-v4-light.svg" alt="zg 在 Coding 和通用文本检索场景中的整体测试结果,对比 Baseline 的答案质量、输入 Token、工具调用和 Agent 耗时" width="1200" />
156
- </picture>
157
- </p>
158
-
159
- - **为何有效:** 语义发现先收窄搜索范围,排序后的词法检索再锚定精确标识符;
160
- 紧凑的证据结果减少了大范围扫描、重复工具调用和模型上下文。
161
- - **为何通用:** 同一检索流程可以适配不同内容:代码索引保留符号、签名和
162
- 层级路径,通用文本则按相关 section 与 chunk 返回证据。
163
-
164
- ### 2. 真实案例分析
165
-
166
- <table align="center">
167
- <tr>
168
- <td align="center">
169
- <picture>
170
- <source media="(prefers-color-scheme: dark)" srcset="./.github/assets/benchmark-repository-top3-v2.png">
171
- <source media="(prefers-color-scheme: light)" srcset="./.github/assets/benchmark-repository-top3-v2-light.png">
172
- <img src="./.github/assets/benchmark-repository-top3-v2-light.png" alt="三个代码库理解任务中 Baseline 与 zg 的 Judge、输入 Token、工具调用和耗时对比" width="980" />
173
- </picture>
174
- </td>
175
- </tr>
176
- </table>
177
-
178
- - **[Pylint](https://github.com/pylint-dev/pylint) — Python 静态分析器:** 任务需要理解 AST 节点处理如何区分带标注与
179
- 不带标注的属性初始化;由于架构入口事先未知,保留符号与层级路径的检索
180
- 更适合定位相关实现。
181
- - **[Matplotlib](https://github.com/matplotlib/matplotlib) — 绘图与渲染库:** 任务需要沿数学文本渲染的多个阶段追踪
182
- `FontInfo` 与字体选择;语义与词法联合排序有助于还原跨文件的数据流和控制流。
183
- - **[Django](https://github.com/django/django) — Web 框架:** 任务关联 username 唯一约束、ORM 事务和 formset
184
- 批量操作;紧凑的排序证据便于汇集分散在多处的设计依据。
185
-
186
- <details>
187
- <summary><strong>测试仓库与具体问题</strong></summary>
188
-
189
- | 仓库 | 问题类型 | 具体问题 |
190
- | --- | --- | --- |
191
- | **`pylint-dev/pylint`** | What<br>架构探索 | 使用 AST 节点类型区分带类型标注和不带类型标注的实例属性初始化时,采用了什么架构模式? |
192
- | **`matplotlib/matplotlib`** | Where<br>数据 / 控制流 | `FontInfo` NamedTuple 在数学文本渲染 Pipeline 中如何传递字体度量和字形数据?控制流如何决定在字符渲染的不同阶段使用 `postscript_name` 还是 `FT2Font` 对象? |
193
- | **`django/django`** | Why<br>设计原理 | User 模型中 username 字段的唯一约束为什么会与 Django ORM 事务处理产生关联?如果在已有数据库中移除该约束,会对基于 formset 的批量操作产生哪些级联影响? |
194
-
195
- </details>
196
-
197
- > zg 最适合目标位置未知、证据跨文件或模块分布的调用链、数据流和架构问题。
198
- > Agent 会自主决定何时及如何调用,结果因此会随模型和运行波动;多次运行均值更可靠。
199
-
200
- ## 📚 文档
201
-
202
- | 指南 | 你可以完成什么 |
203
- | :--- | :--- |
204
- | [Agent 集成](./docs/01-agents.md) | 将 zg 接入 Codex、Claude Code、Qwen Code、Qoder、Cursor 或 OpenCode,并验证是否正常工作。 |
205
- | [CLI 指南](./docs/02-cli.md) | 在终端中搜索、索引和管理本地工作区。 |
206
- | [MCP 指南](./docs/03-mcp.md) | 了解 Agent 可以使用哪些 zg 工具,以及访问权限如何受到保护。 |
207
- | [检索 Pipeline](./docs/04-pipeline.md) | 选择索引范围、保持内容新鲜,并获得更好的检索结果。 |
208
- | [架构](./docs/05-architecture.md) | 了解 zg 如何处理查询,以及数据会保留在哪里。 |
209
- | [服务端与执行模式](./docs/06-server.md) | 在一次性命令和长期运行的本地服务之间选择。 |
210
- | [Embedding 模型](./docs/07-embedding.md) | 根据速度、检索质量、隐私和本机硬件选择合适的模型。 |
211
- | [Roadmap](./docs/08-roadmap.md) | 了解接下来的产品方向,并参与影响 zg 的优先级。 |
212
-
213
- <a id="community"></a>
214
-
215
- ## 🤝 加入社区
216
-
217
- <div align="center">
218
-
219
- | 💬 钉钉群 | 📱 微信群 | 🎮 Discord | X (Twitter) |
220
- | :---: | :---: | :---: | :---: |
221
- | <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/dingding.png" width="150" alt="钉钉二维码"/> | <img src="https://zvec.oss-cn-hongkong.aliyuncs.com/qrcode/wechat.png?v4" width="150" alt="微信二维码"/> | [![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/rKddFBBu9z) | [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/ZvecAI)](<https://x.com/ZvecAI>) |
222
- | 扫码加入 | 扫码加入 | 点击加入 | 点击关注 |
223
-
224
- </div>
225
-
226
- ## ❤️ 参与贡献
227
-
228
- 始终欢迎社区贡献——缺陷修复、新功能和文档改进都会让 zvec-grep 变得更好。
229
-
230
- 请查阅我们的[贡献指南](./CONTRIBUTING.md)开始参与!
@@ -1,7 +0,0 @@
1
- export { RemoteEmbeddingAuthorizationManager } from "./manager.js";
2
- export { createRemoteEmbeddingOperationPermit, remoteEmbeddingAuthorizationGuard, withRemoteEmbeddingOperationPermit, } from "./operation.js";
3
- export { RemoteEmbeddingAuthorizationStore } from "./store.js";
4
- export { formatRemoteEmbeddingAuthorizationPrompt, remoteEmbeddingDisclosureData, type RemoteEmbeddingAuthorizationPromptInput, } from "./prompt.js";
5
- export { indexStatusIsFresh, planRemoteIndexAuthorization, planRemoteSearchAuthorization, searchUsesVector, } from "./planner.js";
6
- export { canonicalizeWorkspaceRoots, createRemoteEmbeddingTarget, remoteEmbeddingTargetFingerprint, workspaceFingerprint, } from "./target.js";
7
- export type { RemoteEmbeddingAuthorizationPlan, RemoteEmbeddingAuthorizationScope, RemoteEmbeddingAuthorizationStatus, RemoteEmbeddingDataDisclosure, RemoteEmbeddingOperation, RemoteEmbeddingOperationPermit, RemoteEmbeddingTarget, RemoteEmbeddingWorkspaceGrant, } from "./types.js";
@@ -1,7 +0,0 @@
1
- export { RemoteEmbeddingAuthorizationManager } from "./manager.js";
2
- export { createRemoteEmbeddingOperationPermit, remoteEmbeddingAuthorizationGuard, withRemoteEmbeddingOperationPermit, } from "./operation.js";
3
- export { RemoteEmbeddingAuthorizationStore } from "./store.js";
4
- export { formatRemoteEmbeddingAuthorizationPrompt, remoteEmbeddingDisclosureData, } from "./prompt.js";
5
- export { indexStatusIsFresh, planRemoteIndexAuthorization, planRemoteSearchAuthorization, searchUsesVector, } from "./planner.js";
6
- export { canonicalizeWorkspaceRoots, createRemoteEmbeddingTarget, remoteEmbeddingTargetFingerprint, workspaceFingerprint, } from "./target.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,oCAAoC,EACpC,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EACL,wCAAwC,EACxC,6BAA6B,GAE9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,gCAAgC,EAChC,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
@@ -1,8 +0,0 @@
1
- import { RemoteEmbeddingAuthorizationStore } from "./store.js";
2
- import type { RemoteEmbeddingAuthorizationPlan, RemoteEmbeddingAuthorizationScope, RemoteEmbeddingOperationPermit } from "./types.js";
3
- export declare class RemoteEmbeddingAuthorizationManager {
4
- readonly store: RemoteEmbeddingAuthorizationStore;
5
- constructor(store?: RemoteEmbeddingAuthorizationStore);
6
- existingWorkspacePermit(plan: RemoteEmbeddingAuthorizationPlan): Promise<RemoteEmbeddingOperationPermit | undefined>;
7
- grant(plan: RemoteEmbeddingAuthorizationPlan, scope: RemoteEmbeddingAuthorizationScope): Promise<RemoteEmbeddingOperationPermit>;
8
- }
@@ -1,19 +0,0 @@
1
- import { createRemoteEmbeddingOperationPermit } from "./operation.js";
2
- import { RemoteEmbeddingAuthorizationStore } from "./store.js";
3
- export class RemoteEmbeddingAuthorizationManager {
4
- store;
5
- constructor(store = new RemoteEmbeddingAuthorizationStore()) {
6
- this.store = store;
7
- }
8
- async existingWorkspacePermit(plan) {
9
- if (!(await this.store.hasGrant(plan.target)))
10
- return undefined;
11
- return createRemoteEmbeddingOperationPermit(plan.target, "workspace");
12
- }
13
- async grant(plan, scope) {
14
- if (scope === "workspace")
15
- await this.store.grant(plan.target);
16
- return createRemoteEmbeddingOperationPermit(plan.target, scope);
17
- }
18
- }
19
- //# sourceMappingURL=manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/authorization/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAO/D,MAAM,OAAO,mCAAmC;IACrC,KAAK,CAAoC;IAElD,YAAY,KAAK,GAAG,IAAI,iCAAiC,EAAE;QACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,IAAsC;QAEtC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAChE,OAAO,oCAAoC,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK,CACT,IAAsC,EACtC,KAAwC;QAExC,IAAI,KAAK,KAAK,WAAW;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,oCAAoC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -1,7 +0,0 @@
1
- import { RemoteEmbeddingAuthorizationStore } from "./store.js";
2
- import { type RemoteEmbeddingAuthorizationScope, type RemoteEmbeddingOperationPermit, type RemoteEmbeddingRequest, type RemoteEmbeddingTarget } from "./types.js";
3
- export declare function createRemoteEmbeddingOperationPermit(target: RemoteEmbeddingTarget, scope: RemoteEmbeddingAuthorizationScope): RemoteEmbeddingOperationPermit;
4
- export declare function withRemoteEmbeddingOperationPermit<T>(permit: RemoteEmbeddingOperationPermit | undefined, operation: () => Promise<T>): Promise<T>;
5
- export declare function remoteEmbeddingAuthorizationGuard(options?: {
6
- store?: RemoteEmbeddingAuthorizationStore;
7
- }): (request: RemoteEmbeddingRequest) => Promise<void>;
@@ -1,50 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- import { randomUUID } from "node:crypto";
3
- import { EngineError } from "../engine/errors.js";
4
- import { RemoteEmbeddingAuthorizationStore } from "./store.js";
5
- import { REMOTE_EMBEDDING_CAPABILITY, } from "./types.js";
6
- const operationPermit = new AsyncLocalStorage();
7
- export function createRemoteEmbeddingOperationPermit(target, scope) {
8
- return {
9
- capability: REMOTE_EMBEDDING_CAPABILITY,
10
- scope,
11
- target,
12
- issuedAt: Date.now(),
13
- operationId: randomUUID(),
14
- };
15
- }
16
- export async function withRemoteEmbeddingOperationPermit(permit, operation) {
17
- if (!permit)
18
- return await operation();
19
- return await operationPermit.run(permit, operation);
20
- }
21
- export function remoteEmbeddingAuthorizationGuard(options = {}) {
22
- const store = options.store ?? new RemoteEmbeddingAuthorizationStore();
23
- return async (request) => {
24
- const permit = operationPermit.getStore();
25
- if (!permit ||
26
- permit.capability !== REMOTE_EMBEDDING_CAPABILITY ||
27
- permit.target.provider !== request.provider ||
28
- permit.target.model !== request.model ||
29
- permit.target.endpoint !== request.endpoint) {
30
- throw authorizationRequiredError(request);
31
- }
32
- if (permit.scope === "workspace" &&
33
- !(await store.hasGrant(permit.target))) {
34
- throw authorizationRequiredError(request, "Workspace grant is missing, invalid, or revoked.");
35
- }
36
- };
37
- }
38
- function authorizationRequiredError(request, detail) {
39
- return new EngineError("Remote Embedding authorization is required", {
40
- code: "ZVEC_GREP.ENGINE.AUTH.REMOTE_EMBEDDING_REQUIRED",
41
- context: [
42
- `provider=${request.provider}`,
43
- `model=${request.model}`,
44
- `endpoint=${request.endpoint}`,
45
- `purpose=${request.purpose}`,
46
- ...(detail ? [`detail=${detail}`] : []),
47
- ].join(" "),
48
- });
49
- }
50
- //# sourceMappingURL=operation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/authorization/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EACL,2BAA2B,GAK5B,MAAM,YAAY,CAAC;AAEpB,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAkC,CAAC;AAEhF,MAAM,UAAU,oCAAoC,CAClD,MAA6B,EAC7B,KAAwC;IAExC,OAAO;QACL,UAAU,EAAE,2BAA2B;QACvC,KAAK;QACL,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;QACpB,WAAW,EAAE,UAAU,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAkD,EAClD,SAA2B;IAE3B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,SAAS,EAAE,CAAC;IACtC,OAAO,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,UAEI,EAAE;IAEN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,iCAAiC,EAAE,CAAC;IACvE,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC1C,IACE,CAAC,MAAM;YACP,MAAM,CAAC,UAAU,KAAK,2BAA2B;YACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAC3C,CAAC;YACD,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IACE,MAAM,CAAC,KAAK,KAAK,WAAW;YAC5B,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EACtC,CAAC;YACD,MAAM,0BAA0B,CAC9B,OAAO,EACP,kDAAkD,CACnD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,OAA+B,EAC/B,MAAe;IAEf,OAAO,IAAI,WAAW,CAAC,4CAA4C,EAAE;QACnE,IAAI,EAAE,iDAAiD;QACvD,OAAO,EAAE;YACP,YAAY,OAAO,CAAC,QAAQ,EAAE;YAC9B,SAAS,OAAO,CAAC,KAAK,EAAE;YACxB,YAAY,OAAO,CAAC,QAAQ,EAAE;YAC9B,WAAW,OAAO,CAAC,OAAO,EAAE;YAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,IAAI,CAAC,GAAG,CAAC;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { NormalizedSearchInput } from "../mcp/input-normalization.js";
2
- import type { EmbeddingModelInfo } from "../engine/models/index.js";
3
- import type { ZvecGrepInfoResult } from "../engine/service/types.js";
4
- import { RemoteEmbeddingAuthorizationStore } from "./store.js";
5
- import type { RemoteEmbeddingAuthorizationPlan } from "./types.js";
6
- export declare function planRemoteIndexAuthorization(input: {
7
- info: ZvecGrepInfoResult;
8
- model: EmbeddingModelInfo;
9
- rebuild?: boolean;
10
- needsUpdate?: boolean;
11
- store?: RemoteEmbeddingAuthorizationStore;
12
- }): Promise<RemoteEmbeddingAuthorizationPlan | undefined>;
13
- export declare function planRemoteSearchAuthorization(input: {
14
- info: ZvecGrepInfoResult;
15
- model: EmbeddingModelInfo;
16
- search: NormalizedSearchInput;
17
- runtimeNeedsReconciliation?: boolean;
18
- store?: RemoteEmbeddingAuthorizationStore;
19
- }): Promise<RemoteEmbeddingAuthorizationPlan | undefined>;
20
- export declare function searchUsesVector(input: Pick<NormalizedSearchInput, "queries" | "routes">): boolean;
21
- export declare function indexStatusIsFresh(info: ZvecGrepInfoResult): boolean;