@zvec/zvec-grep 0.2.2 → 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 (415) hide show
  1. package/README.md +87 -252
  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 -239
  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 -1210
  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 -742
  40. package/dist/cli/commands.js.map +0 -1
  41. package/dist/cli/errors.d.ts +0 -9
  42. package/dist/cli/errors.js +0 -131
  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 -83
  60. package/dist/cli/format/status.js +0 -530
  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 -528
  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 -34
  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 -337
  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 -1089
  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 -27
  99. package/dist/daemon/config.js +0 -107
  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 -73
  111. package/dist/daemon/job-scheduler.js +0 -434
  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 -197
  121. package/dist/daemon/root-lease.js.map +0 -1
  122. package/dist/daemon/root-runtime.d.ts +0 -80
  123. package/dist/daemon/root-runtime.js +0 -340
  124. package/dist/daemon/root-runtime.js.map +0 -1
  125. package/dist/daemon/runtime-manager.d.ts +0 -47
  126. package/dist/daemon/runtime-manager.js +0 -252
  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 -104
  130. package/dist/daemon/runtime.js.map +0 -1
  131. package/dist/daemon/server-controller.d.ts +0 -38
  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 -347
  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 -20
  147. package/dist/engine/errors.js +0 -51
  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/artifact-cache-lock.d.ts +0 -16
  240. package/dist/engine/models/artifact-cache-lock.js +0 -228
  241. package/dist/engine/models/artifact-cache-lock.js.map +0 -1
  242. package/dist/engine/models/artifact-downloader.d.ts +0 -77
  243. package/dist/engine/models/artifact-downloader.js +0 -766
  244. package/dist/engine/models/artifact-downloader.js.map +0 -1
  245. package/dist/engine/models/backends/llama-cpp.d.ts +0 -99
  246. package/dist/engine/models/backends/llama-cpp.js +0 -573
  247. package/dist/engine/models/backends/llama-cpp.js.map +0 -1
  248. package/dist/engine/models/backends/model2vec-runtime.d.ts +0 -63
  249. package/dist/engine/models/backends/model2vec-runtime.js +0 -112
  250. package/dist/engine/models/backends/model2vec-runtime.js.map +0 -1
  251. package/dist/engine/models/backends/model2vec-tokenizer.d.ts +0 -2
  252. package/dist/engine/models/backends/model2vec-tokenizer.js +0 -42
  253. package/dist/engine/models/backends/model2vec-tokenizer.js.map +0 -1
  254. package/dist/engine/models/backends/model2vec-worker-pool.d.ts +0 -25
  255. package/dist/engine/models/backends/model2vec-worker-pool.js +0 -264
  256. package/dist/engine/models/backends/model2vec-worker-pool.js.map +0 -1
  257. package/dist/engine/models/backends/model2vec-worker.d.ts +0 -1
  258. package/dist/engine/models/backends/model2vec-worker.js +0 -41
  259. package/dist/engine/models/backends/model2vec-worker.js.map +0 -1
  260. package/dist/engine/models/backends/model2vec.d.ts +0 -38
  261. package/dist/engine/models/backends/model2vec.js +0 -344
  262. package/dist/engine/models/backends/model2vec.js.map +0 -1
  263. package/dist/engine/models/backends/qwen.d.ts +0 -44
  264. package/dist/engine/models/backends/qwen.js +0 -411
  265. package/dist/engine/models/backends/qwen.js.map +0 -1
  266. package/dist/engine/models/backends/transformers-js.d.ts +0 -87
  267. package/dist/engine/models/backends/transformers-js.js +0 -360
  268. package/dist/engine/models/backends/transformers-js.js.map +0 -1
  269. package/dist/engine/models/catalog.d.ts +0 -490
  270. package/dist/engine/models/catalog.js +0 -522
  271. package/dist/engine/models/catalog.js.map +0 -1
  272. package/dist/engine/models/download-progress.d.ts +0 -16
  273. package/dist/engine/models/download-progress.js +0 -47
  274. package/dist/engine/models/download-progress.js.map +0 -1
  275. package/dist/engine/models/embeddings.d.ts +0 -69
  276. package/dist/engine/models/embeddings.js +0 -125
  277. package/dist/engine/models/embeddings.js.map +0 -1
  278. package/dist/engine/models/factory.d.ts +0 -2
  279. package/dist/engine/models/factory.js +0 -51
  280. package/dist/engine/models/factory.js.map +0 -1
  281. package/dist/engine/models/index.d.ts +0 -4
  282. package/dist/engine/models/index.js +0 -5
  283. package/dist/engine/models/index.js.map +0 -1
  284. package/dist/engine/models/ranking.d.ts +0 -19
  285. package/dist/engine/models/ranking.js +0 -2
  286. package/dist/engine/models/ranking.js.map +0 -1
  287. package/dist/engine/models/resolution.d.ts +0 -8
  288. package/dist/engine/models/resolution.js +0 -22
  289. package/dist/engine/models/resolution.js.map +0 -1
  290. package/dist/engine/pipeline/indexing/index.d.ts +0 -14
  291. package/dist/engine/pipeline/indexing/index.js +0 -1217
  292. package/dist/engine/pipeline/indexing/index.js.map +0 -1
  293. package/dist/engine/pipeline/indexing/input-budget.d.ts +0 -2
  294. package/dist/engine/pipeline/indexing/input-budget.js +0 -51
  295. package/dist/engine/pipeline/indexing/input-budget.js.map +0 -1
  296. package/dist/engine/pipeline/indexing/root-paths.d.ts +0 -7
  297. package/dist/engine/pipeline/indexing/root-paths.js +0 -148
  298. package/dist/engine/pipeline/indexing/root-paths.js.map +0 -1
  299. package/dist/engine/pipeline/indexing/scanner/index.d.ts +0 -14
  300. package/dist/engine/pipeline/indexing/scanner/index.js +0 -776
  301. package/dist/engine/pipeline/indexing/scanner/index.js.map +0 -1
  302. package/dist/engine/pipeline/search/index.d.ts +0 -12
  303. package/dist/engine/pipeline/search/index.js +0 -811
  304. package/dist/engine/pipeline/search/index.js.map +0 -1
  305. package/dist/engine/service/index.d.ts +0 -3
  306. package/dist/engine/service/index.js +0 -2
  307. package/dist/engine/service/index.js.map +0 -1
  308. package/dist/engine/service/lexical.d.ts +0 -28
  309. package/dist/engine/service/lexical.js +0 -446
  310. package/dist/engine/service/lexical.js.map +0 -1
  311. package/dist/engine/service/root.d.ts +0 -15
  312. package/dist/engine/service/root.js +0 -57
  313. package/dist/engine/service/root.js.map +0 -1
  314. package/dist/engine/service/structure-enrichment.d.ts +0 -8
  315. package/dist/engine/service/structure-enrichment.js +0 -178
  316. package/dist/engine/service/structure-enrichment.js.map +0 -1
  317. package/dist/engine/service/types.d.ts +0 -210
  318. package/dist/engine/service/types.js +0 -2
  319. package/dist/engine/service/types.js.map +0 -1
  320. package/dist/engine/service/workspace-index.d.ts +0 -26
  321. package/dist/engine/service/workspace-index.js +0 -157
  322. package/dist/engine/service/workspace-index.js.map +0 -1
  323. package/dist/engine/service/zvec-grep.d.ts +0 -13
  324. package/dist/engine/service/zvec-grep.js +0 -1393
  325. package/dist/engine/service/zvec-grep.js.map +0 -1
  326. package/dist/engine/storage/index.d.ts +0 -53
  327. package/dist/engine/storage/index.js +0 -3
  328. package/dist/engine/storage/index.js.map +0 -1
  329. package/dist/engine/storage/layout.d.ts +0 -10
  330. package/dist/engine/storage/layout.js +0 -29
  331. package/dist/engine/storage/layout.js.map +0 -1
  332. package/dist/engine/storage/zvec.d.ts +0 -4
  333. package/dist/engine/storage/zvec.js +0 -976
  334. package/dist/engine/storage/zvec.js.map +0 -1
  335. package/dist/engine/types.d.ts +0 -303
  336. package/dist/engine/types.js +0 -14
  337. package/dist/engine/types.js.map +0 -1
  338. package/dist/engine/utils/atomic-file.d.ts +0 -3
  339. package/dist/engine/utils/atomic-file.js +0 -39
  340. package/dist/engine/utils/atomic-file.js.map +0 -1
  341. package/dist/engine/utils/daemon-lease.d.ts +0 -17
  342. package/dist/engine/utils/daemon-lease.js +0 -175
  343. package/dist/engine/utils/daemon-lease.js.map +0 -1
  344. package/dist/engine/utils/file-selection.d.ts +0 -10
  345. package/dist/engine/utils/file-selection.js +0 -157
  346. package/dist/engine/utils/file-selection.js.map +0 -1
  347. package/dist/engine/utils/glob.d.ts +0 -9
  348. package/dist/engine/utils/glob.js +0 -208
  349. package/dist/engine/utils/glob.js.map +0 -1
  350. package/dist/engine/utils/hash.d.ts +0 -2
  351. package/dist/engine/utils/hash.js +0 -8
  352. package/dist/engine/utils/hash.js.map +0 -1
  353. package/dist/engine/utils/json.d.ts +0 -8
  354. package/dist/engine/utils/json.js +0 -83
  355. package/dist/engine/utils/json.js.map +0 -1
  356. package/dist/engine/utils/lock.d.ts +0 -19
  357. package/dist/engine/utils/lock.js +0 -254
  358. package/dist/engine/utils/lock.js.map +0 -1
  359. package/dist/engine/utils/path.d.ts +0 -4
  360. package/dist/engine/utils/path.js +0 -18
  361. package/dist/engine/utils/path.js.map +0 -1
  362. package/dist/engine/utils/timing.d.ts +0 -19
  363. package/dist/engine/utils/timing.js +0 -87
  364. package/dist/engine/utils/timing.js.map +0 -1
  365. package/dist/index-progress.d.ts +0 -10
  366. package/dist/index-progress.js +0 -159
  367. package/dist/index-progress.js.map +0 -1
  368. package/dist/index.d.ts +0 -6
  369. package/dist/index.js +0 -4
  370. package/dist/index.js.map +0 -1
  371. package/dist/mcp/http-transport.d.ts +0 -27
  372. package/dist/mcp/http-transport.js +0 -182
  373. package/dist/mcp/http-transport.js.map +0 -1
  374. package/dist/mcp/input-normalization.d.ts +0 -38
  375. package/dist/mcp/input-normalization.js +0 -104
  376. package/dist/mcp/input-normalization.js.map +0 -1
  377. package/dist/mcp/progress-heartbeat.d.ts +0 -17
  378. package/dist/mcp/progress-heartbeat.js +0 -46
  379. package/dist/mcp/progress-heartbeat.js.map +0 -1
  380. package/dist/mcp/request-metadata.d.ts +0 -2
  381. package/dist/mcp/request-metadata.js +0 -11
  382. package/dist/mcp/request-metadata.js.map +0 -1
  383. package/dist/mcp/request-state.d.ts +0 -40
  384. package/dist/mcp/request-state.js +0 -210
  385. package/dist/mcp/request-state.js.map +0 -1
  386. package/dist/mcp/result-format.d.ts +0 -13
  387. package/dist/mcp/result-format.js +0 -75
  388. package/dist/mcp/result-format.js.map +0 -1
  389. package/dist/mcp/schemas.d.ts +0 -668
  390. package/dist/mcp/schemas.js +0 -512
  391. package/dist/mcp/schemas.js.map +0 -1
  392. package/dist/mcp/stdio-bridge.d.ts +0 -15
  393. package/dist/mcp/stdio-bridge.js +0 -190
  394. package/dist/mcp/stdio-bridge.js.map +0 -1
  395. package/dist/mcp/tools.d.ts +0 -153
  396. package/dist/mcp/tools.js +0 -488
  397. package/dist/mcp/tools.js.map +0 -1
  398. package/dist/mcp/toolset.d.ts +0 -5
  399. package/dist/mcp/toolset.js +0 -12
  400. package/dist/mcp/toolset.js.map +0 -1
  401. package/dist/observability/trace-context.d.ts +0 -11
  402. package/dist/observability/trace-context.js +0 -138
  403. package/dist/observability/trace-context.js.map +0 -1
  404. package/dist/prompts/zvec-grep-guidance.d.ts +0 -2
  405. package/dist/prompts/zvec-grep-guidance.js +0 -9
  406. package/dist/prompts/zvec-grep-guidance.js.map +0 -1
  407. package/docs/01-agents.md +0 -209
  408. package/docs/02-cli.md +0 -247
  409. package/docs/03-mcp.md +0 -185
  410. package/docs/04-pipeline.md +0 -226
  411. package/docs/05-architecture.md +0 -86
  412. package/docs/06-server.md +0 -233
  413. package/docs/07-embedding.md +0 -209
  414. package/docs/08-roadmap.md +0 -85
  415. package/docs/README.md +0 -53
package/install.cjs ADDED
@@ -0,0 +1,510 @@
1
+ "use strict";
2
+
3
+ const { createHash, randomBytes } = require("crypto");
4
+ const { spawnSync } = require("child_process");
5
+ const { userInfo } = require("os");
6
+ const {
7
+ chmodSync,
8
+ closeSync,
9
+ copyFileSync,
10
+ existsSync,
11
+ lstatSync,
12
+ mkdirSync,
13
+ mkdtempSync,
14
+ openSync,
15
+ readdirSync,
16
+ readFileSync,
17
+ readSync,
18
+ renameSync,
19
+ rmdirSync,
20
+ rmSync,
21
+ writeSync,
22
+ writeFileSync,
23
+ } = require("fs");
24
+ const { dirname, isAbsolute, join, normalize, relative, resolve, sep } = require("path");
25
+ const plugins = require("./plugins.cjs");
26
+
27
+ function copyTreeSync(source, destination) {
28
+ const metadata = lstatSync(source);
29
+ if (metadata.isDirectory()) {
30
+ mkdirSync(destination, { recursive: true });
31
+ for (const name of readdirSync(source)) {
32
+ copyTreeSync(join(source, name), join(destination, name));
33
+ }
34
+ return;
35
+ }
36
+ if (!metadata.isFile()) {
37
+ throw new Error(`native payload is not a regular file: ${source}`);
38
+ }
39
+ mkdirSync(dirname(destination), { recursive: true });
40
+ copyFileSync(source, destination);
41
+ }
42
+
43
+ function digest(path) {
44
+ const hash = createHash("sha256");
45
+ const fd = openSync(path, "r");
46
+ const buffer = Buffer.allocUnsafe(1024 * 1024);
47
+ try {
48
+ let count;
49
+ while ((count = readSync(fd, buffer, 0, buffer.length, null)) > 0) hash.update(buffer.subarray(0, count));
50
+ } finally {
51
+ closeSync(fd);
52
+ }
53
+ return hash.digest("hex");
54
+ }
55
+
56
+ function checkedPayloadPath(root, payloadPath) {
57
+ if (!/^(bin|lib|parts)\/[a-zA-Z0-9_./-]+$/.test(payloadPath) ||
58
+ payloadPath.split("/").some((part) => !part || part === "." || part === "..")) {
59
+ throw new Error(`invalid native payload path: ${payloadPath}`);
60
+ }
61
+ if (isAbsolute(payloadPath)) {
62
+ throw new Error(`native checksum contains an absolute path: ${payloadPath}`);
63
+ }
64
+ const normalized = normalize(payloadPath);
65
+ if (normalized === ".." || normalized.startsWith(`..${sep}`)) {
66
+ throw new Error(`native checksum escapes the package: ${payloadPath}`);
67
+ }
68
+ const canonicalRoot = resolve(root);
69
+ const resolved = resolve(canonicalRoot, normalized);
70
+ const relativePath = relative(canonicalRoot, resolved);
71
+ if (relativePath === ".." || relativePath.startsWith(`..${sep}`) || isAbsolute(relativePath)) {
72
+ throw new Error(`native checksum escapes the package: ${payloadPath}`);
73
+ }
74
+ return resolved;
75
+ }
76
+
77
+ function listPayloadFiles(root, directory = root) {
78
+ const files = [];
79
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
80
+ const path = join(directory, entry.name);
81
+ if (entry.isDirectory()) {
82
+ files.push(...listPayloadFiles(root, path));
83
+ } else {
84
+ files.push(relative(root, path).split(sep).join("/"));
85
+ }
86
+ }
87
+ return files;
88
+ }
89
+
90
+ function verifyPackageIdentity(root, name, expectedVersion) {
91
+ const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
92
+ if (packageJson.name !== name || packageJson.version !== expectedVersion) {
93
+ throw new Error(
94
+ `native package mismatch: expected ${name}@${expectedVersion}, got ${packageJson.name}@${packageJson.version}`,
95
+ );
96
+ }
97
+ return packageJson;
98
+ }
99
+
100
+ function verifyPayload(platformRoot, entry, expectedVersion) {
101
+ verifyPackageIdentity(platformRoot, entry.package, expectedVersion);
102
+ const checksumPath = join(platformRoot, "checksums.json");
103
+ const checksums = JSON.parse(readFileSync(checksumPath, "utf8"));
104
+ if (![1, 3].includes(checksums.schemaVersion) || checksums.target !== entry.target) {
105
+ throw new Error(`invalid native checksum manifest for ${entry.package}`);
106
+ }
107
+ const expectedBinary = `bin/${entry.binary}`;
108
+ if (!checksums.files || !checksums.files[expectedBinary]) {
109
+ throw new Error(`native checksum manifest does not contain ${expectedBinary}`);
110
+ }
111
+
112
+ // Schema 1 is a self-contained package; schema 3 declares optional plugins separately.
113
+ for (const [file, expected] of Object.entries(checksums.files)) {
114
+ checkedPayloadPath(platformRoot, file);
115
+ if (!Number.isSafeInteger(expected.bytes) || expected.bytes < 0 || !/^[a-f0-9]{64}$/.test(expected.sha256)) {
116
+ throw new Error(`invalid native checksum: ${file}`);
117
+ }
118
+ }
119
+ verifyFiles(platformRoot, checksums.files);
120
+ if (checksums.schemaVersion === 3) readPlugins(platformRoot, entry, expectedVersion, checksums);
121
+ return checksums;
122
+ }
123
+
124
+ function readPlugins(platformRoot, entry, version, checksums) {
125
+ const metadata = verifyPackageIdentity(platformRoot, entry.package, version);
126
+ if (Object.keys(metadata.dependencies || {}).length ||
127
+ Object.keys(metadata.optionalDependencies || {}).length ||
128
+ checksums.coreId !== plugins.coreIdentity(entry.target, version, checksums.files) ||
129
+ digest(join(platformRoot, "plugins.json")) !== checksums.pluginsSha256) {
130
+ throw new Error("invalid base/plugin manifest binding");
131
+ }
132
+ const manifest = plugins.validatePlugins(JSON.parse(readFileSync(join(platformRoot, "plugins.json"), "utf8")),
133
+ entry, version, checksums.coreId);
134
+ for (const file of Object.keys(manifest.files)) {
135
+ checkedPayloadPath(platformRoot, file);
136
+ if (!file.startsWith("lib/") || checksums.files[file]) throw new Error("plugin may not replace a base file");
137
+ }
138
+ for (const component of manifest.components) checkedPayloadPath(platformRoot, component.payload);
139
+ return manifest;
140
+ }
141
+
142
+ function verifyFiles(root, files) {
143
+ const declaredFiles = Object.keys(files).sort();
144
+ const actualFiles = ["bin", "lib", "parts"]
145
+ .filter((directory) => existsSync(join(root, directory)))
146
+ .flatMap((directory) => listPayloadFiles(root, join(root, directory)))
147
+ .sort();
148
+ if (JSON.stringify(actualFiles) !== JSON.stringify(declaredFiles)) {
149
+ const missing = declaredFiles.filter((file) => !actualFiles.includes(file));
150
+ const unexpected = actualFiles.filter((file) => !declaredFiles.includes(file));
151
+ throw new Error(`native payload files do not match the checksum manifest (missing: ${missing.join(", ")}; unexpected: ${unexpected.join(", ")})`);
152
+ }
153
+
154
+ for (const [payloadPath, expected] of Object.entries(files)) {
155
+ const absolutePath = checkedPayloadPath(root, payloadPath);
156
+ const metadata = lstatSync(absolutePath);
157
+ if (!metadata.isFile()) {
158
+ throw new Error(`native payload is not a file: ${payloadPath}`);
159
+ }
160
+ if (metadata.size !== expected.bytes || digest(absolutePath) !== expected.sha256) {
161
+ throw new Error(`native payload checksum mismatch: ${payloadPath}`);
162
+ }
163
+ }
164
+ }
165
+
166
+ // Also used by release verification: a successful CPU CLI must not hide missing
167
+ // or corrupt GPU components, even when no GPU is present on the verification host.
168
+ function verifyInstallation({ metaRoot, platformRoot, entry, expectedVersion, requireCuda = false }) {
169
+ const checksums = verifyPayload(platformRoot, entry, expectedVersion);
170
+ if (checksums.schemaVersion === 3) {
171
+ const manifest = readPlugins(platformRoot, entry, expectedVersion, checksums);
172
+ const receipt = JSON.parse(readFileSync(join(metaRoot, "native-install.json"), "utf8"));
173
+ if (receipt.target !== entry.target || receipt.version !== expectedVersion || receipt.coreId !== manifest.coreId ||
174
+ !Array.isArray(receipt.components) ||
175
+ (receipt.components.length && JSON.stringify(receipt.components) !== JSON.stringify(manifest.components.map((c) => c.package))) ||
176
+ (requireCuda && receipt.components.length !== manifest.components.length)) {
177
+ throw new Error("installed plugin identity/core ABI mismatch or required CUDA plugins missing");
178
+ }
179
+ verifyFiles(metaRoot, installedFiles(entry, { ...checksums.files,
180
+ ...(receipt.components.length ? manifest.files : {}) }));
181
+ return { ...receipt, plugins: receipt.components.length ? manifest.components : [] };
182
+ }
183
+ if (requireCuda) throw new Error("required CUDA plugins missing");
184
+ verifyFiles(metaRoot, installedFiles(entry, checksums.files));
185
+ return { target: entry.target, version: expectedVersion, components: [] };
186
+ }
187
+
188
+ function materializeBase({ metaRoot, platformRoot, entry, expectedVersion }) {
189
+ const checksums = verifyPayload(platformRoot, entry, expectedVersion);
190
+
191
+ const temporaryRoot = join(metaRoot, `.native-${process.pid}.tmp`);
192
+ const metaBin = join(metaRoot, "bin");
193
+ const sourceBin = join(platformRoot, "bin");
194
+ const sourceLib = join(platformRoot, "lib");
195
+ const stagedBin = join(temporaryRoot, "bin");
196
+ const stagedLib = join(temporaryRoot, "lib");
197
+ rmSync(temporaryRoot, { recursive: true, force: true });
198
+ mkdirSync(temporaryRoot, { recursive: true });
199
+
200
+ try {
201
+ const nativeEntries = readdirSync(sourceBin);
202
+ if (nativeEntries.length !== 1 || nativeEntries[0] !== entry.binary) {
203
+ throw new Error("native package bin/ must contain only the zg executable");
204
+ }
205
+ mkdirSync(stagedBin, { recursive: true });
206
+ copyFileSync(join(sourceBin, entry.binary), join(stagedBin, entry.binary));
207
+ copyTreeSync(sourceLib, stagedLib);
208
+
209
+ // Verify the complete CPU base before touching the previous installation.
210
+ verifyFiles(temporaryRoot, checksums.files);
211
+
212
+ mkdirSync(metaBin, { recursive: true });
213
+ const metaLib = join(metaRoot, "lib");
214
+ const finalBinary = join(metaBin, "zg.exe");
215
+ const temporaryBinary = join(metaBin, `.zg-${process.pid}.tmp`);
216
+ copyFileSync(join(stagedBin, entry.binary), temporaryBinary);
217
+ if (process.platform !== "win32") {
218
+ chmodSync(temporaryBinary, 0o755);
219
+ }
220
+ const previousLib = join(temporaryRoot, "previous-lib");
221
+ const previousBinary = join(temporaryRoot, "previous-binary");
222
+ let movedLib = false;
223
+ let movedBinary = false;
224
+ let installedLib = false;
225
+ try {
226
+ if (existsSync(metaLib)) { renameSync(metaLib, previousLib); movedLib = true; }
227
+ if (existsSync(finalBinary)) { renameSync(finalBinary, previousBinary); movedBinary = true; }
228
+ renameSync(stagedLib, metaLib);
229
+ installedLib = true;
230
+ renameSync(temporaryBinary, finalBinary);
231
+ } catch (error) {
232
+ if (installedLib) rmSync(metaLib, { recursive: true, force: true });
233
+ if (movedLib) renameSync(previousLib, metaLib);
234
+ if (movedBinary) renameSync(previousBinary, finalBinary);
235
+ throw error;
236
+ } finally {
237
+ rmSync(temporaryBinary, { force: true });
238
+ }
239
+ } finally {
240
+ rmSync(temporaryRoot, { recursive: true, force: true });
241
+ }
242
+ }
243
+
244
+ function installedFiles(entry, files) {
245
+ return Object.fromEntries(Object.entries(files).map(([file, value]) =>
246
+ [file === `bin/${entry.binary}` ? "bin/zg.exe" : file, value]));
247
+ }
248
+
249
+ function writeReceipt(metaRoot, receipt) {
250
+ const temporary = join(metaRoot, `.native-install-${process.pid}.json`);
251
+ writeFileSync(temporary, `${JSON.stringify({ schemaVersion: 1, target: receipt.target,
252
+ version: receipt.version, coreId: receipt.coreId, components: receipt.components }, null, 2)}\n`);
253
+ renameSync(temporary, join(metaRoot, "native-install.json"));
254
+ }
255
+
256
+ function readInstallLock(path) {
257
+ let identity;
258
+ try { identity = readFileSync(path, "utf8"); } catch (error) {
259
+ if (error.code === "ENOENT") return undefined;
260
+ throw error;
261
+ }
262
+ let record;
263
+ try { record = JSON.parse(identity); } catch { /* invalid/partially written lock: fail closed */ }
264
+ // Retain recovery of the previous PID-only format.
265
+ const pid = typeof record === "number" ? record : record?.pid;
266
+ if (!Number.isSafeInteger(pid) || pid <= 0 ||
267
+ (typeof record !== "number" && typeof record?.token !== "string")) {
268
+ throw new Error("invalid installation lock; inspect .native-install.lock before retrying");
269
+ }
270
+ return { pid, identity };
271
+ }
272
+
273
+ function ownerAlive(pid) {
274
+ try { process.kill(pid, 0); } catch (error) { if (error.code === "ESRCH") return false; }
275
+ return true; // Permission/query errors must not authorize deleting a lock.
276
+ }
277
+
278
+ function openInstallLock(path) {
279
+ try { return openSync(path, "wx"); } catch (error) {
280
+ if (error.code !== "EEXIST") throw error;
281
+ throw new Error("another native installation is in progress; retry after it finishes");
282
+ }
283
+ }
284
+
285
+ function acquireInstallLock(path) {
286
+ const previous = readInstallLock(path);
287
+ if (!previous) return openInstallLock(path);
288
+ if (ownerAlive(previous.pid)) throw new Error("another native installation is in progress; retry after it finishes");
289
+ const recovery = `${path}.recovery`;
290
+ // Only one stale-owner recovery may inspect/remove/replace the lock at once.
291
+ // Never reclaim this short-lived guard automatically: doing so would recreate
292
+ // the same race one level up. A crash here requires manual inspection.
293
+ try { mkdirSync(recovery); } catch (error) {
294
+ if (error.code !== "EEXIST") throw error;
295
+ throw new Error("native lock recovery is in progress; if no installer is running, inspect .native-install.lock.recovery before retrying");
296
+ }
297
+ try {
298
+ const current = readInstallLock(path);
299
+ if (current && (current.identity !== previous.identity || ownerAlive(current.pid))) {
300
+ throw new Error("installation lock owner changed; retry after the current installation finishes");
301
+ }
302
+ if (current) rmSync(path);
303
+ // A fresh installer may win this gap; exclusive create must then fail,
304
+ // without removing its replacement lock.
305
+ return openInstallLock(path);
306
+ } finally { rmdirSync(recovery); }
307
+ }
308
+
309
+ function installLock(metaRoot, action) {
310
+ mkdirSync(metaRoot, { recursive: true });
311
+ const path = join(metaRoot, ".native-install.lock");
312
+ const identity = JSON.stringify({ pid: process.pid, token: randomBytes(16).toString("hex") });
313
+ const fd = acquireInstallLock(path);
314
+ try {
315
+ writeFileSync(fd, identity);
316
+ return action();
317
+ } finally {
318
+ closeSync(fd);
319
+ // A live owner cannot be reclaimed by this protocol. Also refuse to delete
320
+ // a lock replaced externally (or by a different invocation in this process).
321
+ if (readInstallLock(path)?.identity === identity) rmSync(path);
322
+ }
323
+ }
324
+
325
+ function assemblePlugins(manifest, config, temporary, fetchArchive) {
326
+ for (const [index, component] of manifest.components.entries()) {
327
+ const archive = fetchArchive(component, manifest, config);
328
+ const part = join(temporary, `part-${index}`);
329
+ plugins.extractPayload(archive, component, manifest, part);
330
+ const destination = checkedPayloadPath(temporary, component.file);
331
+ mkdirSync(dirname(destination), { recursive: true });
332
+ const input = openSync(part, "r");
333
+ const output = openSync(destination, "a", 0o644);
334
+ const buffer = Buffer.allocUnsafe(1024 * 1024);
335
+ try {
336
+ let count;
337
+ while ((count = readSync(input, buffer, 0, buffer.length, null))) {
338
+ let offset = 0;
339
+ while (offset < count) offset += writeSync(output, buffer, offset, count - offset);
340
+ }
341
+ } finally { closeSync(input); closeSync(output); rmSync(part); }
342
+ }
343
+ verifyFiles(temporary, manifest.files);
344
+ }
345
+
346
+ function materialize(options) {
347
+ const { metaRoot, platformRoot, entry, expectedVersion } = options;
348
+ const config = options.config || plugins.settings();
349
+ // Base corruption and invalid metadata are never optional failures.
350
+ const checksums = verifyPayload(platformRoot, entry, expectedVersion);
351
+ return installLock(metaRoot, () => {
352
+ if (checksums.schemaVersion !== 3) {
353
+ materializeBase(options);
354
+ if (config.mode === "cuda") throw new Error("this native package has no CUDA plugin support");
355
+ return verifyInstallation(options);
356
+ }
357
+ const manifest = readPlugins(platformRoot, entry, expectedVersion, checksums);
358
+ let installed;
359
+ try { installed = verifyInstallation(options); } catch { /* bootstrap or repair from the verified base */ }
360
+ if (!installed) {
361
+ materializeBase(options);
362
+ installed = { schemaVersion: 1, target: entry.target, version: expectedVersion,
363
+ coreId: manifest.coreId, components: [] };
364
+ writeReceipt(metaRoot, installed);
365
+ }
366
+ if (config.mode === "cpu") return installed;
367
+ if (installed.components.length) return installed;
368
+ const wantsCuda = config.mode === "cuda" || (options.detectNvidia || plugins.detectNvidia)();
369
+ if (!wantsCuda) {
370
+ console.log("zvec-grep: CPU runtime installed; CUDA can be added with ZG_INSTALL_ACCELERATOR=cuda npm rebuild");
371
+ return installed;
372
+ }
373
+ const temporary = mkdtempSync(join(metaRoot, ".plugins-"));
374
+ const activated = [];
375
+ try {
376
+ assemblePlugins(manifest, config, temporary, options.fetchArchive || plugins.componentArchive);
377
+ // Every complete library is verified before activation. Core files are
378
+ // untouched. Stop zg/daemon before installing; locked Windows DLLs fail.
379
+ for (const file of Object.keys(manifest.files)) {
380
+ const destination = checkedPayloadPath(metaRoot, file);
381
+ mkdirSync(dirname(destination), { recursive: true });
382
+ if (existsSync(destination)) throw new Error(`plugin destination is occupied: ${file}; stop zg and retry`);
383
+ renameSync(checkedPayloadPath(temporary, file), destination);
384
+ activated.push(destination);
385
+ }
386
+ writeReceipt(metaRoot, { ...installed, components: manifest.components.map((c) => c.package) });
387
+ console.log("zvec-grep: verified CUDA plugins installed; restart any running zg daemon. Host CUDA libraries/drivers are still required.");
388
+ return verifyInstallation({ ...options, requireCuda: true });
389
+ } catch (error) {
390
+ for (const path of activated.reverse()) rmSync(path, { force: true });
391
+ writeReceipt(metaRoot, installed);
392
+ if (config.mode === "cuda") throw error;
393
+ console.warn(`zvec-grep: optional CUDA installation failed: ${error.message}; CPU remains usable. Retry with ZG_INSTALL_ACCELERATOR=cuda npm rebuild.`);
394
+ return installed;
395
+ } finally { rmSync(temporary, { recursive: true, force: true }); }
396
+ });
397
+ }
398
+
399
+ function resolvePackageRoot(metaRoot, packageName) {
400
+ try {
401
+ return dirname(require.resolve(`${packageName}/package.json`, { paths: [resolve(metaRoot)] }));
402
+ } catch (error) {
403
+ const detail = error && error.code === "MODULE_NOT_FOUND" ? "" : ` (${error.message})`;
404
+ throw new Error(
405
+ `missing ${packageName}; reinstall without --omit=optional or install the exact-version platform base tarball${detail}`,
406
+ );
407
+ }
408
+ }
409
+
410
+ function resolvePlatformRoot(metaRoot, entry) {
411
+ return resolvePackageRoot(metaRoot, entry.package);
412
+ }
413
+
414
+ function selectPlatform(platforms, platform, arch, reportHeader = {}) {
415
+ const libc = platform === "linux"
416
+ ? (reportHeader.glibcVersionRuntime ? "glibc" : "musl")
417
+ : undefined;
418
+ const matches = platforms.filter((entry) =>
419
+ entry.os === platform
420
+ && entry.cpu === arch
421
+ && (entry.libc === undefined || entry.libc === libc));
422
+ if (matches.length !== 1) {
423
+ const suffix = libc ? `-${libc}` : "";
424
+ throw new Error(`zvec-grep does not publish a native package for ${platform}-${arch}${suffix}`);
425
+ }
426
+ return matches[0];
427
+ }
428
+
429
+ function upgradeInstalledAgents(metaRoot, options = {}) {
430
+ const environment = options.environment || process.env;
431
+ const enabled = (value) => value && value !== "0" && value.toLowerCase() !== "false";
432
+ if (environment.npm_config_global !== "true" ||
433
+ environment.ZG_INSTALL_SKIP_AGENT_UPGRADE === "1" ||
434
+ ["ci", "exec"].includes(environment.npm_command) ||
435
+ ["CI", "CONTINUOUS_INTEGRATION", "BUILD_NUMBER", "GITHUB_ACTIONS", "TF_BUILD", "JENKINS_URL"].some((key) => enabled(environment[key])) ||
436
+ ["SUDO_UID", "SUDO_GID", "SUDO_USER"].some((key) => environment[key])) return;
437
+ const warn = options.warn || console.warn;
438
+ try {
439
+ const identity = (options.identity || (() => ({
440
+ ...userInfo(),
441
+ euid: process.geteuid ? process.geteuid() : undefined,
442
+ })))();
443
+ const home = process.platform === "win32"
444
+ ? environment.USERPROFILE || environment.HOME
445
+ : environment.HOME || environment.USERPROFILE;
446
+ if (identity.uid === 0 || (identity.euid !== undefined && identity.uid !== identity.euid) ||
447
+ !home || !isAbsolute(home) || resolve(home) !== resolve(identity.homedir)) return;
448
+ const result = (options.run || spawnSync)(join(resolve(metaRoot), "bin", "zg.exe"),
449
+ ["--install", "--upgrade-installed"], {
450
+ env: environment,
451
+ encoding: "utf8",
452
+ stdio: ["ignore", "pipe", "pipe"],
453
+ timeout: 10000,
454
+ killSignal: "SIGKILL",
455
+ maxBuffer: 1024 * 1024,
456
+ windowsHide: true,
457
+ });
458
+ const log = join(metaRoot, "agent-upgrade.log");
459
+ const details = `Exit status: ${result.status}; signal: ${result.signal || "none"}\n${result.stdout || ""}${result.stderr || ""}${result.error ? `${result.error.message}\n` : ""}`;
460
+ writeFileSync(log, details, { mode: 0o600 });
461
+ if (result.error || result.signal || result.status !== 0) {
462
+ warn(`zvec-grep: agent configuration upgrade needs attention; see ${log}. Run zg --install --upgrade-installed to retry.`);
463
+ } else if (result.stdout) {
464
+ (options.log || console.log)(result.stdout.trimEnd());
465
+ }
466
+ } catch (error) {
467
+ warn(`zvec-grep: agent configuration upgrade could not finish: ${error.message}. Run zg --install --upgrade-installed to retry.`);
468
+ }
469
+ }
470
+
471
+ function installPackage(options) {
472
+ const receipt = materialize(options);
473
+ upgradeInstalledAgents(options.metaRoot, options.agentUpgrade);
474
+ return receipt;
475
+ }
476
+
477
+ function main() {
478
+ const metaRoot = __dirname;
479
+ const packageJson = JSON.parse(readFileSync(join(metaRoot, "package.json"), "utf8"));
480
+ const platforms = JSON.parse(readFileSync(join(metaRoot, "platforms.json"), "utf8"));
481
+ const report = process.report && process.report.getReport();
482
+ const entry = selectPlatform(platforms, process.platform, process.arch, report?.header ?? {});
483
+ const platformRoot = resolvePlatformRoot(metaRoot, entry);
484
+ installPackage({
485
+ metaRoot,
486
+ platformRoot,
487
+ entry,
488
+ expectedVersion: packageJson.version,
489
+ });
490
+ }
491
+
492
+ module.exports = {
493
+ installPackage,
494
+ upgradeInstalledAgents,
495
+ materialize,
496
+ resolvePlatformRoot,
497
+ selectPlatform,
498
+ verifyPayload,
499
+ verifyInstallation,
500
+ readPlugins,
501
+ };
502
+
503
+ if (require.main === module) {
504
+ try {
505
+ main();
506
+ } catch (error) {
507
+ console.error(`zvec-grep install: ${error.message}`);
508
+ process.exitCode = 1;
509
+ }
510
+ }
package/package.json CHANGED
@@ -1,86 +1,36 @@
1
1
  {
2
2
  "name": "@zvec/zvec-grep",
3
- "version": "0.2.2",
4
- "description": "Agent-friendly hybrid workspace search across code and non-code content.",
5
- "type": "module",
3
+ "version": "0.3.0-rc.1",
4
+ "description": "Native semantic and lexical code search CLI",
6
5
  "license": "Apache-2.0",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/zvec-ai/zvec-grep.git"
10
- },
11
- "bugs": {
12
- "url": "https://github.com/zvec-ai/zvec-grep/issues"
13
- },
14
- "homepage": "https://github.com/zvec-ai/zvec-grep#readme",
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
- "engines": {
19
- "node": ">=22"
20
- },
21
- "exports": {
22
- ".": {
23
- "types": "./dist/index.d.ts",
24
- "import": "./dist/index.js"
25
- }
26
- },
6
+ "repository": "https://github.com/zvec-ai/zvec-grep",
27
7
  "bin": {
28
- "zg": "dist/cli/index.js"
8
+ "zg": "bin/zg.exe"
29
9
  },
30
10
  "files": [
11
+ "bin",
12
+ "install.cjs",
13
+ "plugins.cjs",
14
+ "platforms.json",
31
15
  "README.md",
32
- "README_CN.md",
33
- "LICENSE",
34
- "docs",
35
- "dist"
16
+ "LICENSE"
36
17
  ],
37
18
  "scripts": {
38
- "build": "tsc -p tsconfig.json",
39
- "check": "npm run lint && npm run format:check && npm run typecheck && npm run test:coverage && npm run test:package",
40
- "format:check": "prettier --check .",
41
- "lint": "eslint .",
42
- "postbuild": "node --input-type=module --eval \"import { chmod } from 'node:fs/promises'; await chmod('dist/cli/index.js', 0o755);\"",
43
- "prepack": "npm run build",
44
- "test:coverage": "npm run build && c8 --all --include=dist/**/*.js --check-coverage --lines=80 --statements=80 --functions=80 --branches=80 npm run test:all",
45
- "test:all": "npm run test:run:root && npm run test:run:unit && npm run test:run:integration && npm run test:run:e2e",
46
- "test:e2e": "npm run build && npm run test:run:e2e",
47
- "test:integration": "npm run build && npm run test:run:root && npm run test:run:integration",
48
- "test:package": "npm run build && node --test --test-concurrency=1 test/package/*.test.mjs",
49
- "test:smoke:local-model": "node --test --test-concurrency=1 test/smoke/local-model-package.test.mjs",
50
- "test:run:e2e": "node --test --test-concurrency=1 test/e2e/*.test.mjs",
51
- "test:run:integration": "node --test --test-concurrency=1 test/integration/*.test.mjs",
52
- "test:run:root": "node --test --test-concurrency=1 test/*.test.mjs",
53
- "test:run:unit": "node --test --test-concurrency=1 test/unit/*.test.mjs test/unit/extraction/*.test.mjs test/unit/models/*.test.mjs",
54
- "test:unit": "npm run build && npm run test:run:unit",
55
- "typecheck": "tsc -p tsconfig.json --noEmit",
56
- "test": "npm run build && npm run test:all"
57
- },
58
- "devDependencies": {
59
- "@eslint/js": "^10.0.1",
60
- "@modelcontextprotocol/conformance": "0.1.16",
61
- "@types/node": "^22.20.1",
62
- "c8": "^11.0.0",
63
- "eslint": "^10.7.0",
64
- "globals": "^17.7.0",
65
- "prettier": "^3.9.5",
66
- "typescript": "^5.9.3",
67
- "typescript-eslint": "^8.64.0"
19
+ "postinstall": "node install.cjs"
68
20
  },
69
- "dependencies": {
70
- "@huggingface/tokenizers": "^0.1.3",
71
- "@huggingface/transformers": "^3.8.1",
72
- "@modelcontextprotocol/client": "2.0.0",
73
- "@modelcontextprotocol/core": "2.0.0",
74
- "@modelcontextprotocol/node": "2.0.0",
75
- "@modelcontextprotocol/server": "2.0.0",
76
- "@vscode/ripgrep": "^1.18.0",
77
- "@zvec/zvec": "^0.7.1",
78
- "jsonc-parser": "^3.3.1",
79
- "tree-sitter-wasms": "^0.1.13",
80
- "web-tree-sitter": "^0.20.8",
81
- "zod": "4.2.0"
21
+ "engines": {
22
+ "node": ">=14.14.0"
82
23
  },
83
24
  "optionalDependencies": {
84
- "node-llama-cpp": "3.18.1"
25
+ "@zvec/zvec-grep-darwin-arm64": "0.3.0-rc.1",
26
+ "@zvec/zvec-grep-darwin-x64": "0.3.0-rc.1",
27
+ "@zvec/zvec-grep-linux-x64-gnu": "0.3.0-rc.1",
28
+ "@zvec/zvec-grep-linux-arm64-gnu": "0.3.0-rc.1",
29
+ "@zvec/zvec-grep-win32-x64-msvc": "0.3.0-rc.1",
30
+ "@zvec/zvec-grep-win32-arm64-msvc": "0.3.0-rc.1"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "provenance": true
85
35
  }
86
36
  }