@angri450/zvec-grep 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +319 -0
  3. package/README_CN.md +297 -0
  4. package/dist/authorization/index.d.ts +7 -0
  5. package/dist/authorization/index.js +7 -0
  6. package/dist/authorization/index.js.map +1 -0
  7. package/dist/authorization/manager.d.ts +8 -0
  8. package/dist/authorization/manager.js +19 -0
  9. package/dist/authorization/manager.js.map +1 -0
  10. package/dist/authorization/operation.d.ts +7 -0
  11. package/dist/authorization/operation.js +50 -0
  12. package/dist/authorization/operation.js.map +1 -0
  13. package/dist/authorization/planner.d.ts +21 -0
  14. package/dist/authorization/planner.js +97 -0
  15. package/dist/authorization/planner.js.map +1 -0
  16. package/dist/authorization/prompt.d.ts +12 -0
  17. package/dist/authorization/prompt.js +63 -0
  18. package/dist/authorization/prompt.js.map +1 -0
  19. package/dist/authorization/store.d.ts +20 -0
  20. package/dist/authorization/store.js +251 -0
  21. package/dist/authorization/store.js.map +1 -0
  22. package/dist/authorization/target.d.ts +15 -0
  23. package/dist/authorization/target.js +49 -0
  24. package/dist/authorization/target.js.map +1 -0
  25. package/dist/authorization/types.d.ts +61 -0
  26. package/dist/authorization/types.js +2 -0
  27. package/dist/authorization/types.js.map +1 -0
  28. package/dist/cli/args.d.ts +6 -0
  29. package/dist/cli/args.js +1255 -0
  30. package/dist/cli/args.js.map +1 -0
  31. package/dist/cli/auth.d.ts +21 -0
  32. package/dist/cli/auth.js +209 -0
  33. package/dist/cli/auth.js.map +1 -0
  34. package/dist/cli/commands.d.ts +4 -0
  35. package/dist/cli/commands.js +801 -0
  36. package/dist/cli/commands.js.map +1 -0
  37. package/dist/cli/errors.d.ts +9 -0
  38. package/dist/cli/errors.js +131 -0
  39. package/dist/cli/errors.js.map +1 -0
  40. package/dist/cli/format/context.d.ts +9 -0
  41. package/dist/cli/format/context.js +786 -0
  42. package/dist/cli/format/context.js.map +1 -0
  43. package/dist/cli/format/debug.d.ts +4 -0
  44. package/dist/cli/format/debug.js +60 -0
  45. package/dist/cli/format/debug.js.map +1 -0
  46. package/dist/cli/format/highlight.d.ts +3 -0
  47. package/dist/cli/format/highlight.js +106 -0
  48. package/dist/cli/format/highlight.js.map +1 -0
  49. package/dist/cli/format/progress.d.ts +13 -0
  50. package/dist/cli/format/progress.js +290 -0
  51. package/dist/cli/format/progress.js.map +1 -0
  52. package/dist/cli/format/range.d.ts +3 -0
  53. package/dist/cli/format/range.js +24 -0
  54. package/dist/cli/format/range.js.map +1 -0
  55. package/dist/cli/format/status.d.ts +83 -0
  56. package/dist/cli/format/status.js +530 -0
  57. package/dist/cli/format/status.js.map +1 -0
  58. package/dist/cli/help.d.ts +1 -0
  59. package/dist/cli/help.js +546 -0
  60. package/dist/cli/help.js.map +1 -0
  61. package/dist/cli/index.d.ts +2 -0
  62. package/dist/cli/index.js +40 -0
  63. package/dist/cli/index.js.map +1 -0
  64. package/dist/cli/install.d.ts +4 -0
  65. package/dist/cli/install.js +1735 -0
  66. package/dist/cli/install.js.map +1 -0
  67. package/dist/cli/managed-rg.d.ts +10 -0
  68. package/dist/cli/managed-rg.js +337 -0
  69. package/dist/cli/managed-rg.js.map +1 -0
  70. package/dist/cli/server-search.d.ts +3 -0
  71. package/dist/cli/server-search.js +12 -0
  72. package/dist/cli/server-search.js.map +1 -0
  73. package/dist/cli/types.d.ts +87 -0
  74. package/dist/cli/types.js +10 -0
  75. package/dist/cli/types.js.map +1 -0
  76. package/dist/cli/version.d.ts +1 -0
  77. package/dist/cli/version.js +13 -0
  78. package/dist/cli/version.js.map +1 -0
  79. package/dist/client/daemon-client.d.ts +31 -0
  80. package/dist/client/daemon-client.js +203 -0
  81. package/dist/client/daemon-client.js.map +1 -0
  82. package/dist/client/mode-router.d.ts +9 -0
  83. package/dist/client/mode-router.js +28 -0
  84. package/dist/client/mode-router.js.map +1 -0
  85. package/dist/client/search-policy.d.ts +11 -0
  86. package/dist/client/search-policy.js +15 -0
  87. package/dist/client/search-policy.js.map +1 -0
  88. package/dist/daemon/backend.d.ts +78 -0
  89. package/dist/daemon/backend.js +1118 -0
  90. package/dist/daemon/backend.js.map +1 -0
  91. package/dist/daemon/change-set.d.ts +30 -0
  92. package/dist/daemon/change-set.js +163 -0
  93. package/dist/daemon/change-set.js.map +1 -0
  94. package/dist/daemon/config.d.ts +27 -0
  95. package/dist/daemon/config.js +107 -0
  96. package/dist/daemon/config.js.map +1 -0
  97. package/dist/daemon/errors.d.ts +5 -0
  98. package/dist/daemon/errors.js +11 -0
  99. package/dist/daemon/errors.js.map +1 -0
  100. package/dist/daemon/http-server.d.ts +30 -0
  101. package/dist/daemon/http-server.js +307 -0
  102. package/dist/daemon/http-server.js.map +1 -0
  103. package/dist/daemon/index-coordinator.d.ts +22 -0
  104. package/dist/daemon/index-coordinator.js +55 -0
  105. package/dist/daemon/index-coordinator.js.map +1 -0
  106. package/dist/daemon/job-scheduler.d.ts +85 -0
  107. package/dist/daemon/job-scheduler.js +492 -0
  108. package/dist/daemon/job-scheduler.js.map +1 -0
  109. package/dist/daemon/logger.d.ts +10 -0
  110. package/dist/daemon/logger.js +101 -0
  111. package/dist/daemon/logger.js.map +1 -0
  112. package/dist/daemon/model-pool.d.ts +48 -0
  113. package/dist/daemon/model-pool.js +190 -0
  114. package/dist/daemon/model-pool.js.map +1 -0
  115. package/dist/daemon/root-lease.d.ts +14 -0
  116. package/dist/daemon/root-lease.js +197 -0
  117. package/dist/daemon/root-lease.js.map +1 -0
  118. package/dist/daemon/root-runtime.d.ts +80 -0
  119. package/dist/daemon/root-runtime.js +340 -0
  120. package/dist/daemon/root-runtime.js.map +1 -0
  121. package/dist/daemon/runtime-manager.d.ts +47 -0
  122. package/dist/daemon/runtime-manager.js +252 -0
  123. package/dist/daemon/runtime-manager.js.map +1 -0
  124. package/dist/daemon/runtime.d.ts +12 -0
  125. package/dist/daemon/runtime.js +105 -0
  126. package/dist/daemon/runtime.js.map +1 -0
  127. package/dist/daemon/server-controller.d.ts +38 -0
  128. package/dist/daemon/server-controller.js +327 -0
  129. package/dist/daemon/server-controller.js.map +1 -0
  130. package/dist/daemon/watch-manager.d.ts +62 -0
  131. package/dist/daemon/watch-manager.js +415 -0
  132. package/dist/daemon/watch-manager.js.map +1 -0
  133. package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
  134. package/dist/daemon/workspace-read-session-cache.js +115 -0
  135. package/dist/daemon/workspace-read-session-cache.js.map +1 -0
  136. package/dist/engine/code-formats.d.ts +3 -0
  137. package/dist/engine/code-formats.js +14 -0
  138. package/dist/engine/code-formats.js.map +1 -0
  139. package/dist/engine/config.d.ts +57 -0
  140. package/dist/engine/config.js +351 -0
  141. package/dist/engine/config.js.map +1 -0
  142. package/dist/engine/errors.d.ts +20 -0
  143. package/dist/engine/errors.js +51 -0
  144. package/dist/engine/errors.js.map +1 -0
  145. package/dist/engine/extraction/code/adapter.d.ts +19 -0
  146. package/dist/engine/extraction/code/adapter.js +24 -0
  147. package/dist/engine/extraction/code/adapter.js.map +1 -0
  148. package/dist/engine/extraction/code/extractor.d.ts +13 -0
  149. package/dist/engine/extraction/code/extractor.js +696 -0
  150. package/dist/engine/extraction/code/extractor.js.map +1 -0
  151. package/dist/engine/extraction/code/families/c-family.d.ts +2 -0
  152. package/dist/engine/extraction/code/families/c-family.js +122 -0
  153. package/dist/engine/extraction/code/families/c-family.js.map +1 -0
  154. package/dist/engine/extraction/code/families/js-ts.d.ts +12 -0
  155. package/dist/engine/extraction/code/families/js-ts.js +118 -0
  156. package/dist/engine/extraction/code/families/js-ts.js.map +1 -0
  157. package/dist/engine/extraction/code/families/metadata.d.ts +8 -0
  158. package/dist/engine/extraction/code/families/metadata.js +86 -0
  159. package/dist/engine/extraction/code/families/metadata.js.map +1 -0
  160. package/dist/engine/extraction/code/families/name-field.d.ts +3 -0
  161. package/dist/engine/extraction/code/families/name-field.js +22 -0
  162. package/dist/engine/extraction/code/families/name-field.js.map +1 -0
  163. package/dist/engine/extraction/code/languages/c.d.ts +1 -0
  164. package/dist/engine/extraction/code/languages/c.js +12 -0
  165. package/dist/engine/extraction/code/languages/c.js.map +1 -0
  166. package/dist/engine/extraction/code/languages/cpp.d.ts +1 -0
  167. package/dist/engine/extraction/code/languages/cpp.js +18 -0
  168. package/dist/engine/extraction/code/languages/cpp.js.map +1 -0
  169. package/dist/engine/extraction/code/languages/go.d.ts +2 -0
  170. package/dist/engine/extraction/code/languages/go.js +70 -0
  171. package/dist/engine/extraction/code/languages/go.js.map +1 -0
  172. package/dist/engine/extraction/code/languages/java.d.ts +1 -0
  173. package/dist/engine/extraction/code/languages/java.js +17 -0
  174. package/dist/engine/extraction/code/languages/java.js.map +1 -0
  175. package/dist/engine/extraction/code/languages/javascript.d.ts +2 -0
  176. package/dist/engine/extraction/code/languages/javascript.js +23 -0
  177. package/dist/engine/extraction/code/languages/javascript.js.map +1 -0
  178. package/dist/engine/extraction/code/languages/python.d.ts +2 -0
  179. package/dist/engine/extraction/code/languages/python.js +52 -0
  180. package/dist/engine/extraction/code/languages/python.js.map +1 -0
  181. package/dist/engine/extraction/code/languages/rust.d.ts +2 -0
  182. package/dist/engine/extraction/code/languages/rust.js +25 -0
  183. package/dist/engine/extraction/code/languages/rust.js.map +1 -0
  184. package/dist/engine/extraction/code/languages/typescript.d.ts +2 -0
  185. package/dist/engine/extraction/code/languages/typescript.js +37 -0
  186. package/dist/engine/extraction/code/languages/typescript.js.map +1 -0
  187. package/dist/engine/extraction/code/tree-sitter/grammar.d.ts +4 -0
  188. package/dist/engine/extraction/code/tree-sitter/grammar.js +49 -0
  189. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
  190. package/dist/engine/extraction/code/tree-sitter/nodes.d.ts +3 -0
  191. package/dist/engine/extraction/code/tree-sitter/nodes.js +27 -0
  192. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
  193. package/dist/engine/extraction/code/tree-sitter/parser.d.ts +2 -0
  194. package/dist/engine/extraction/code/tree-sitter/parser.js +31 -0
  195. package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
  196. package/dist/engine/extraction/ids.d.ts +1 -0
  197. package/dist/engine/extraction/ids.js +5 -0
  198. package/dist/engine/extraction/ids.js.map +1 -0
  199. package/dist/engine/extraction/image/extractor.d.ts +5 -0
  200. package/dist/engine/extraction/image/extractor.js +35 -0
  201. package/dist/engine/extraction/image/extractor.js.map +1 -0
  202. package/dist/engine/extraction/index.d.ts +4 -0
  203. package/dist/engine/extraction/index.js +3 -0
  204. package/dist/engine/extraction/index.js.map +1 -0
  205. package/dist/engine/extraction/markdown/extractor.d.ts +7 -0
  206. package/dist/engine/extraction/markdown/extractor.js +362 -0
  207. package/dist/engine/extraction/markdown/extractor.js.map +1 -0
  208. package/dist/engine/extraction/runtime.d.ts +9 -0
  209. package/dist/engine/extraction/runtime.js +37 -0
  210. package/dist/engine/extraction/runtime.js.map +1 -0
  211. package/dist/engine/extraction/source.d.ts +18 -0
  212. package/dist/engine/extraction/source.js +22 -0
  213. package/dist/engine/extraction/source.js.map +1 -0
  214. package/dist/engine/extraction/text/extractor.d.ts +7 -0
  215. package/dist/engine/extraction/text/extractor.js +168 -0
  216. package/dist/engine/extraction/text/extractor.js.map +1 -0
  217. package/dist/engine/extraction/types.d.ts +4 -0
  218. package/dist/engine/extraction/types.js +2 -0
  219. package/dist/engine/extraction/types.js.map +1 -0
  220. package/dist/engine/extraction/vector-content.d.ts +5 -0
  221. package/dist/engine/extraction/vector-content.js +83 -0
  222. package/dist/engine/extraction/vector-content.js.map +1 -0
  223. package/dist/engine/file-size-policy.d.ts +6 -0
  224. package/dist/engine/file-size-policy.js +20 -0
  225. package/dist/engine/file-size-policy.js.map +1 -0
  226. package/dist/engine/file-type.d.ts +15 -0
  227. package/dist/engine/file-type.js +152 -0
  228. package/dist/engine/file-type.js.map +1 -0
  229. package/dist/engine/index-status.d.ts +9 -0
  230. package/dist/engine/index-status.js +38 -0
  231. package/dist/engine/index-status.js.map +1 -0
  232. package/dist/engine/manifest.d.ts +13 -0
  233. package/dist/engine/manifest.js +124 -0
  234. package/dist/engine/manifest.js.map +1 -0
  235. package/dist/engine/models/artifact-cache-lock.d.ts +16 -0
  236. package/dist/engine/models/artifact-cache-lock.js +228 -0
  237. package/dist/engine/models/artifact-cache-lock.js.map +1 -0
  238. package/dist/engine/models/artifact-downloader.d.ts +77 -0
  239. package/dist/engine/models/artifact-downloader.js +766 -0
  240. package/dist/engine/models/artifact-downloader.js.map +1 -0
  241. package/dist/engine/models/backends/llama-cpp.d.ts +100 -0
  242. package/dist/engine/models/backends/llama-cpp.js +567 -0
  243. package/dist/engine/models/backends/llama-cpp.js.map +1 -0
  244. package/dist/engine/models/backends/model2vec-runtime.d.ts +63 -0
  245. package/dist/engine/models/backends/model2vec-runtime.js +112 -0
  246. package/dist/engine/models/backends/model2vec-runtime.js.map +1 -0
  247. package/dist/engine/models/backends/model2vec-tokenizer.d.ts +2 -0
  248. package/dist/engine/models/backends/model2vec-tokenizer.js +42 -0
  249. package/dist/engine/models/backends/model2vec-tokenizer.js.map +1 -0
  250. package/dist/engine/models/backends/model2vec-worker-pool.d.ts +25 -0
  251. package/dist/engine/models/backends/model2vec-worker-pool.js +264 -0
  252. package/dist/engine/models/backends/model2vec-worker-pool.js.map +1 -0
  253. package/dist/engine/models/backends/model2vec-worker.d.ts +1 -0
  254. package/dist/engine/models/backends/model2vec-worker.js +41 -0
  255. package/dist/engine/models/backends/model2vec-worker.js.map +1 -0
  256. package/dist/engine/models/backends/model2vec.d.ts +38 -0
  257. package/dist/engine/models/backends/model2vec.js +344 -0
  258. package/dist/engine/models/backends/model2vec.js.map +1 -0
  259. package/dist/engine/models/backends/qwen.d.ts +44 -0
  260. package/dist/engine/models/backends/qwen.js +411 -0
  261. package/dist/engine/models/backends/qwen.js.map +1 -0
  262. package/dist/engine/models/backends/transformers-js.d.ts +90 -0
  263. package/dist/engine/models/backends/transformers-js.js +411 -0
  264. package/dist/engine/models/backends/transformers-js.js.map +1 -0
  265. package/dist/engine/models/catalog.d.ts +490 -0
  266. package/dist/engine/models/catalog.js +522 -0
  267. package/dist/engine/models/catalog.js.map +1 -0
  268. package/dist/engine/models/download-progress.d.ts +16 -0
  269. package/dist/engine/models/download-progress.js +47 -0
  270. package/dist/engine/models/download-progress.js.map +1 -0
  271. package/dist/engine/models/embeddings.d.ts +73 -0
  272. package/dist/engine/models/embeddings.js +125 -0
  273. package/dist/engine/models/embeddings.js.map +1 -0
  274. package/dist/engine/models/factory.d.ts +2 -0
  275. package/dist/engine/models/factory.js +51 -0
  276. package/dist/engine/models/factory.js.map +1 -0
  277. package/dist/engine/models/index.d.ts +5 -0
  278. package/dist/engine/models/index.js +6 -0
  279. package/dist/engine/models/index.js.map +1 -0
  280. package/dist/engine/models/local-embedding-parallelism.d.ts +15 -0
  281. package/dist/engine/models/local-embedding-parallelism.js +63 -0
  282. package/dist/engine/models/local-embedding-parallelism.js.map +1 -0
  283. package/dist/engine/models/local-embedding-queue.d.ts +12 -0
  284. package/dist/engine/models/local-embedding-queue.js +65 -0
  285. package/dist/engine/models/local-embedding-queue.js.map +1 -0
  286. package/dist/engine/models/ranking.d.ts +19 -0
  287. package/dist/engine/models/ranking.js +2 -0
  288. package/dist/engine/models/ranking.js.map +1 -0
  289. package/dist/engine/models/resolution.d.ts +8 -0
  290. package/dist/engine/models/resolution.js +22 -0
  291. package/dist/engine/models/resolution.js.map +1 -0
  292. package/dist/engine/pipeline/indexing/index.d.ts +14 -0
  293. package/dist/engine/pipeline/indexing/index.js +1219 -0
  294. package/dist/engine/pipeline/indexing/index.js.map +1 -0
  295. package/dist/engine/pipeline/indexing/input-budget.d.ts +2 -0
  296. package/dist/engine/pipeline/indexing/input-budget.js +51 -0
  297. package/dist/engine/pipeline/indexing/input-budget.js.map +1 -0
  298. package/dist/engine/pipeline/indexing/root-paths.d.ts +7 -0
  299. package/dist/engine/pipeline/indexing/root-paths.js +148 -0
  300. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
  301. package/dist/engine/pipeline/indexing/scanner/index.d.ts +14 -0
  302. package/dist/engine/pipeline/indexing/scanner/index.js +776 -0
  303. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
  304. package/dist/engine/pipeline/search/index.d.ts +12 -0
  305. package/dist/engine/pipeline/search/index.js +811 -0
  306. package/dist/engine/pipeline/search/index.js.map +1 -0
  307. package/dist/engine/service/index.d.ts +3 -0
  308. package/dist/engine/service/index.js +2 -0
  309. package/dist/engine/service/index.js.map +1 -0
  310. package/dist/engine/service/lexical.d.ts +28 -0
  311. package/dist/engine/service/lexical.js +446 -0
  312. package/dist/engine/service/lexical.js.map +1 -0
  313. package/dist/engine/service/root.d.ts +15 -0
  314. package/dist/engine/service/root.js +57 -0
  315. package/dist/engine/service/root.js.map +1 -0
  316. package/dist/engine/service/structure-enrichment.d.ts +8 -0
  317. package/dist/engine/service/structure-enrichment.js +178 -0
  318. package/dist/engine/service/structure-enrichment.js.map +1 -0
  319. package/dist/engine/service/types.d.ts +212 -0
  320. package/dist/engine/service/types.js +2 -0
  321. package/dist/engine/service/types.js.map +1 -0
  322. package/dist/engine/service/workspace-index.d.ts +26 -0
  323. package/dist/engine/service/workspace-index.js +157 -0
  324. package/dist/engine/service/workspace-index.js.map +1 -0
  325. package/dist/engine/service/zvec-grep.d.ts +15 -0
  326. package/dist/engine/service/zvec-grep.js +1520 -0
  327. package/dist/engine/service/zvec-grep.js.map +1 -0
  328. package/dist/engine/storage/index.d.ts +53 -0
  329. package/dist/engine/storage/index.js +3 -0
  330. package/dist/engine/storage/index.js.map +1 -0
  331. package/dist/engine/storage/layout.d.ts +10 -0
  332. package/dist/engine/storage/layout.js +29 -0
  333. package/dist/engine/storage/layout.js.map +1 -0
  334. package/dist/engine/storage/zvec.d.ts +4 -0
  335. package/dist/engine/storage/zvec.js +976 -0
  336. package/dist/engine/storage/zvec.js.map +1 -0
  337. package/dist/engine/types.d.ts +303 -0
  338. package/dist/engine/types.js +14 -0
  339. package/dist/engine/types.js.map +1 -0
  340. package/dist/engine/utils/atomic-file.d.ts +3 -0
  341. package/dist/engine/utils/atomic-file.js +39 -0
  342. package/dist/engine/utils/atomic-file.js.map +1 -0
  343. package/dist/engine/utils/daemon-lease.d.ts +17 -0
  344. package/dist/engine/utils/daemon-lease.js +175 -0
  345. package/dist/engine/utils/daemon-lease.js.map +1 -0
  346. package/dist/engine/utils/file-selection.d.ts +10 -0
  347. package/dist/engine/utils/file-selection.js +157 -0
  348. package/dist/engine/utils/file-selection.js.map +1 -0
  349. package/dist/engine/utils/glob.d.ts +9 -0
  350. package/dist/engine/utils/glob.js +208 -0
  351. package/dist/engine/utils/glob.js.map +1 -0
  352. package/dist/engine/utils/hash.d.ts +2 -0
  353. package/dist/engine/utils/hash.js +8 -0
  354. package/dist/engine/utils/hash.js.map +1 -0
  355. package/dist/engine/utils/json.d.ts +8 -0
  356. package/dist/engine/utils/json.js +83 -0
  357. package/dist/engine/utils/json.js.map +1 -0
  358. package/dist/engine/utils/lock.d.ts +19 -0
  359. package/dist/engine/utils/lock.js +254 -0
  360. package/dist/engine/utils/lock.js.map +1 -0
  361. package/dist/engine/utils/path.d.ts +4 -0
  362. package/dist/engine/utils/path.js +18 -0
  363. package/dist/engine/utils/path.js.map +1 -0
  364. package/dist/engine/utils/timing.d.ts +19 -0
  365. package/dist/engine/utils/timing.js +87 -0
  366. package/dist/engine/utils/timing.js.map +1 -0
  367. package/dist/index-progress.d.ts +10 -0
  368. package/dist/index-progress.js +159 -0
  369. package/dist/index-progress.js.map +1 -0
  370. package/dist/index.d.ts +6 -0
  371. package/dist/index.js +4 -0
  372. package/dist/index.js.map +1 -0
  373. package/dist/mcp/http-transport.d.ts +27 -0
  374. package/dist/mcp/http-transport.js +182 -0
  375. package/dist/mcp/http-transport.js.map +1 -0
  376. package/dist/mcp/input-normalization.d.ts +38 -0
  377. package/dist/mcp/input-normalization.js +104 -0
  378. package/dist/mcp/input-normalization.js.map +1 -0
  379. package/dist/mcp/progress-heartbeat.d.ts +17 -0
  380. package/dist/mcp/progress-heartbeat.js +46 -0
  381. package/dist/mcp/progress-heartbeat.js.map +1 -0
  382. package/dist/mcp/request-metadata.d.ts +2 -0
  383. package/dist/mcp/request-metadata.js +11 -0
  384. package/dist/mcp/request-metadata.js.map +1 -0
  385. package/dist/mcp/request-state.d.ts +40 -0
  386. package/dist/mcp/request-state.js +210 -0
  387. package/dist/mcp/request-state.js.map +1 -0
  388. package/dist/mcp/result-format.d.ts +13 -0
  389. package/dist/mcp/result-format.js +75 -0
  390. package/dist/mcp/result-format.js.map +1 -0
  391. package/dist/mcp/schemas.d.ts +668 -0
  392. package/dist/mcp/schemas.js +512 -0
  393. package/dist/mcp/schemas.js.map +1 -0
  394. package/dist/mcp/stdio-bridge.d.ts +15 -0
  395. package/dist/mcp/stdio-bridge.js +190 -0
  396. package/dist/mcp/stdio-bridge.js.map +1 -0
  397. package/dist/mcp/tools.d.ts +153 -0
  398. package/dist/mcp/tools.js +488 -0
  399. package/dist/mcp/tools.js.map +1 -0
  400. package/dist/mcp/toolset.d.ts +5 -0
  401. package/dist/mcp/toolset.js +12 -0
  402. package/dist/mcp/toolset.js.map +1 -0
  403. package/dist/observability/trace-context.d.ts +11 -0
  404. package/dist/observability/trace-context.js +138 -0
  405. package/dist/observability/trace-context.js.map +1 -0
  406. package/dist/prompts/zvec-grep-guidance.d.ts +2 -0
  407. package/dist/prompts/zvec-grep-guidance.js +9 -0
  408. package/dist/prompts/zvec-grep-guidance.js.map +1 -0
  409. package/docs/01-agents.md +217 -0
  410. package/docs/02-cli.md +259 -0
  411. package/docs/03-mcp.md +185 -0
  412. package/docs/04-pipeline.md +234 -0
  413. package/docs/05-architecture.md +86 -0
  414. package/docs/06-server.md +279 -0
  415. package/docs/07-embedding.md +227 -0
  416. package/docs/08-roadmap.md +85 -0
  417. package/docs/README.md +53 -0
  418. package/package.json +87 -0
@@ -0,0 +1,138 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ const storage = new AsyncLocalStorage();
3
+ const TRACEPARENT = /^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})((?:-[0-9a-f]+)*)$/;
4
+ export function currentTraceContext() {
5
+ return storage.getStore();
6
+ }
7
+ export function runWithTraceContext(context, operation) {
8
+ return context ? storage.run(context, operation) : operation();
9
+ }
10
+ export function traceContextFromMcpBody(body) {
11
+ if (!body || typeof body !== "object" || Array.isArray(body)) {
12
+ return undefined;
13
+ }
14
+ return traceContextFromMcpMeta(body.params?._meta);
15
+ }
16
+ export function traceContextFromMcpMeta(meta) {
17
+ if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
18
+ return undefined;
19
+ }
20
+ const values = meta;
21
+ const traceparent = typeof values.traceparent === "string" ? values.traceparent : undefined;
22
+ const match = traceparent?.match(TRACEPARENT);
23
+ if (!match ||
24
+ match[1] === "ff" ||
25
+ (match[1] === "00" && match[5] !== "") ||
26
+ match[2] === "0".repeat(32) ||
27
+ match[3] === "0".repeat(16)) {
28
+ return undefined;
29
+ }
30
+ const tracestate = validTracestate(values.tracestate);
31
+ const baggage = validBaggage(values.baggage);
32
+ return {
33
+ traceparent: traceparent,
34
+ traceId: match[2],
35
+ ...(tracestate ? { tracestate } : {}),
36
+ ...(baggage ? { baggage } : {}),
37
+ };
38
+ }
39
+ export function traceHeaders() {
40
+ const context = currentTraceContext();
41
+ if (!context)
42
+ return {};
43
+ return {
44
+ traceparent: context.traceparent,
45
+ ...(context.tracestate ? { tracestate: context.tracestate } : {}),
46
+ ...(context.baggage ? { baggage: context.baggage } : {}),
47
+ };
48
+ }
49
+ function boundedHeader(value, maxLength, allowHorizontalTab = false) {
50
+ if (typeof value !== "string" || value.length > maxLength)
51
+ return undefined;
52
+ for (const character of value) {
53
+ const code = character.charCodeAt(0);
54
+ if (code > 0x7e ||
55
+ (code < 0x20 && !(allowHorizontalTab && code === 0x09))) {
56
+ return undefined;
57
+ }
58
+ }
59
+ return value;
60
+ }
61
+ function validTracestate(value) {
62
+ const header = boundedHeader(value, 512);
63
+ if (!header)
64
+ return undefined;
65
+ const members = header.split(",");
66
+ if (members.length > 32)
67
+ return undefined;
68
+ const keys = new Set();
69
+ for (const rawMember of members) {
70
+ const member = rawMember.trim();
71
+ const separator = member.indexOf("=");
72
+ if (separator <= 0)
73
+ return undefined;
74
+ const key = member.slice(0, separator);
75
+ const item = member.slice(separator + 1);
76
+ if (!/^(?:[a-z][a-z0-9_\-*/]{0,255}|[a-z0-9][a-z0-9_\-*/]{0,240}@[a-z][a-z0-9_\-*/]{0,13})$/.test(key) ||
77
+ item.length === 0 ||
78
+ item.length > 256 ||
79
+ !/^[\x20-\x2b\x2d-\x3c\x3e-\x7e]+$/.test(item) ||
80
+ item.endsWith(" ") ||
81
+ keys.has(key)) {
82
+ return undefined;
83
+ }
84
+ keys.add(key);
85
+ }
86
+ return header;
87
+ }
88
+ function validBaggage(value) {
89
+ const header = boundedHeader(value, 8_192, true);
90
+ if (!header)
91
+ return undefined;
92
+ const members = header.split(",");
93
+ if (members.length > 64)
94
+ return undefined;
95
+ for (const rawMember of members) {
96
+ const segments = rawMember.trim().split(";");
97
+ const pair = segments.shift();
98
+ const separator = pair.indexOf("=");
99
+ const pairValue = separator < 0 ? "" : pair.slice(separator + 1).trim();
100
+ if (separator <= 0 ||
101
+ !isHttpToken(pair.slice(0, separator).trim()) ||
102
+ hasInvalidBaggageCharacters(pairValue, ",")) {
103
+ return undefined;
104
+ }
105
+ for (const rawProperty of segments) {
106
+ const property = rawProperty.trim();
107
+ const propertySeparator = property.indexOf("=");
108
+ const key = propertySeparator < 0
109
+ ? property
110
+ : property.slice(0, propertySeparator).trim();
111
+ const propertyValue = propertySeparator < 0
112
+ ? ""
113
+ : property.slice(propertySeparator + 1).trim();
114
+ if (!isHttpToken(key) ||
115
+ hasInvalidBaggageCharacters(propertyValue, ";,")) {
116
+ return undefined;
117
+ }
118
+ }
119
+ }
120
+ return header;
121
+ }
122
+ function isHttpToken(value) {
123
+ return /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(value);
124
+ }
125
+ function hasInvalidBaggageCharacters(value, delimiters) {
126
+ for (const character of value) {
127
+ const code = character.charCodeAt(0);
128
+ if (code <= 0x20 ||
129
+ code === 0x22 ||
130
+ code === 0x5c ||
131
+ code === 0x7f ||
132
+ delimiters.includes(character)) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ }
138
+ //# sourceMappingURL=trace-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-context.js","sourceRoot":"","sources":["../../src/observability/trace-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const ZVEC_GREP_WORKSPACE_EVIDENCE_RULES: readonly ["Use the current workspace as the evidence source when the user asks about local material, prior context establishes it as relevant, or the question concerns how the current project works—even if the workspace is not mentioned explicitly.", "A workspace may contain any mix of code, documents, configuration, and data.", "Do not use workspace retrieval for unrelated open-world questions, current external facts, or web content that does not depend on local evidence."];
2
+ export declare function formatPromptRules(heading: string, rules: readonly string[]): string;
@@ -0,0 +1,9 @@
1
+ export const ZVEC_GREP_WORKSPACE_EVIDENCE_RULES = [
2
+ "Use the current workspace as the evidence source when the user asks about local material, prior context establishes it as relevant, or the question concerns how the current project works—even if the workspace is not mentioned explicitly.",
3
+ "A workspace may contain any mix of code, documents, configuration, and data.",
4
+ "Do not use workspace retrieval for unrelated open-world questions, current external facts, or web content that does not depend on local evidence.",
5
+ ];
6
+ export function formatPromptRules(heading, rules) {
7
+ return [heading, ...rules.map((rule) => `- ${rule}`)].join("\n");
8
+ }
9
+ //# sourceMappingURL=zvec-grep-guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zvec-grep-guidance.js","sourceRoot":"","sources":["../../src/prompts/zvec-grep-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,+OAA+O;IAC/O,8EAA8E;IAC9E,mJAAmJ;CAC3I,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,KAAwB;IAExB,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,217 @@
1
+ # Agent integrations
2
+
3
+ [Documentation](./README.md) · [Agents](./01-agents.md) ·
4
+ [CLI](./02-cli.md) · [MCP](./03-mcp.md) · [Pipeline](./04-pipeline.md) ·
5
+ [Architecture](./05-architecture.md) · [Server](./06-server.md) ·
6
+ [Embedding](./07-embedding.md) · [Roadmap](./08-roadmap.md)
7
+
8
+ `zg --install` connects zvec-grep to supported agents through the local MCP
9
+ server. After that, the agent can use indexed retrieval for workspace-grounded
10
+ semantic discovery while keeping exact lookup on the appropriate native or
11
+ managed-rg route.
12
+
13
+ ## Supported agents
14
+
15
+ | Agent | Target | Managed configuration |
16
+ | --- | --- | --- |
17
+ | Codex | `codex` | `~/.codex/config.toml` and `~/.codex/AGENTS.md` |
18
+ | Claude Code | `claude` | `~/.claude.json`, `~/.claude/settings.json`, and `~/.claude/CLAUDE.md` |
19
+ | Qwen Code | `qwen` | `~/.qwen/settings.json` and `~/.qwen/QWEN.md` |
20
+ | Qoder CLI and IDE | `qoder` | `~/.qoder/settings.json`, `~/.qoder/AGENTS.md`, and the IDE user-level `~/.qoder/mcp.json` |
21
+ | OpenCode | `opencode` | the existing `~/.config/opencode/opencode.jsonc` or `opencode.json`, and the adjacent `AGENTS.md` |
22
+ | Cursor | `cursor` | `~/.cursor/mcp.json` |
23
+
24
+ The standard environment overrides used by each agent are respected, including
25
+ `CODEX_HOME`, `CLAUDE_CONFIG_DIR`, `QWEN_HOME`, `QODER_CONFIG_DIR`,
26
+ `QODER_IDE_MCP_PATH`, `QODER_IDE_EXECUTABLE`, `OPENCODE_CONFIG`, and
27
+ `CURSOR_CONFIG_DIR`.
28
+
29
+ For OpenCode, `OPENCODE_CONFIG` selects the exact configuration file. Without
30
+ that override, the installer uses an existing global `opencode.jsonc` before
31
+ `opencode.json`, preserves JSONC comments and unrelated settings, and creates
32
+ `opencode.json` only when neither file exists. If both files exist, the selected
33
+ `opencode.jsonc` path is reported in the install output. On Linux and other
34
+ XDG-based environments, `XDG_CONFIG_HOME` replaces the default `~/.config`
35
+ root.
36
+
37
+ The current Qoder CLI package exposes both `qoder` and `qodercli` commands, but
38
+ the installer exposes only the canonical `qoder` target. One Qoder install
39
+ configures both the CLI and IDE, and automatic detection recognizes either CLI
40
+ executable or the IDE. `QODER_CONFIG_DIR` overrides the Qoder CLI configuration
41
+ directory; `QODER_IDE_MCP_PATH` independently overrides the full IDE `mcp.json` path, and
42
+ `QODER_IDE_EXECUTABLE` overrides the IDE executable used by automatic detection.
43
+
44
+ ## Install an integration
45
+
46
+ Run the guided installer to select from detected agents:
47
+
48
+ ```bash
49
+ zg --install
50
+ ```
51
+
52
+ For scripts or repeatable setup, select targets explicitly:
53
+
54
+ ```bash
55
+ zg --install --target codex --yes
56
+ zg --install --target claude --target cursor --yes
57
+ zg --install --target qwen --yes
58
+ zg --install --target qoder --yes
59
+ zg --install --target all --yes
60
+ ```
61
+
62
+ The installer:
63
+
64
+ 1. adds a managed `zvec_grep` MCP entry;
65
+ 2. adds search guidance where the agent supports it;
66
+ 3. adds local MCP tool approval for Codex and Claude Code, managed server trust
67
+ for Qwen Code and Qoder CLI, and exact search/rg allow rules for Qoder's
68
+ CLI-backed runtime;
69
+ 4. starts the local zvec-grep server when possible.
70
+
71
+ The [Server guide](./06-server.md) explains when the daemon is useful and how its
72
+ lifecycle differs from Direct execution.
73
+
74
+ Managed text blocks use `ZVEC_GREP_START` and `ZVEC_GREP_END` markers. Existing
75
+ content outside those blocks is preserved, as are unrelated settings and other
76
+ MCP servers. If an unmanaged `zvec_grep` entry already exists, inspect it before
77
+ using `--force` to replace it.
78
+
79
+ For Qoder CLI, `--mcp-transport` selects either a stdio or HTTP entry under
80
+ `mcpServers`; the installer also manages the timeout and trust fields. Search
81
+ guidance is written to `${QODER_CONFIG_DIR:-~/.qoder}/AGENTS.md` without
82
+ replacing unrelated guidance.
83
+
84
+ The same Qoder `settings.json`, used by Qoder CLI and CLI-backed Qoder clients,
85
+ receives exact `permissions.allow` rules for
86
+ `mcp__zvec_grep__zvec_grep_search` and `mcp__zvec_grep__zvec_grep_rg`, plus the
87
+ equivalent server-level `alwaysAllow` policy. This avoids repeated tool approval
88
+ prompts without allowing other MCP tools. Existing permission rules and JSONC
89
+ comments are preserved; uninstall removes only rules added by zg.
90
+
91
+ The same install writes the Qoder IDE MCP entry to its user-level
92
+ `~/.qoder/mcp.json`. Set `QODER_IDE_MCP_PATH` to override that complete file
93
+ path. The IDE entry uses
94
+ stdio when `--mcp-transport stdio` is selected. For HTTP it uses a `type: "sse"`
95
+ URL entry, from which Qoder IDE automatically detects the streamable HTTP MCP
96
+ endpoint. Qoder's platform `SharedClientCache` is runtime/cache state rather
97
+ than the user MCP configuration entry point, so the installer does not write
98
+ it. Qoder IDE has no supported global Rules file, so the installer does not
99
+ claim to create or manage IDE search guidance.
100
+
101
+ Both Qoder clients receive the same MCP form-based Remote Embedding
102
+ authorization request as other clients. If Qoder CLI reports that no handler is
103
+ registered for `elicitation/create`, or returns a decline or cancellation
104
+ without displaying the form, its installed `AGENTS.md` guidance supplies a
105
+ compatibility interaction through the exact `AskUserQuestion` tool. The CLI
106
+ agent must ask whether to allow Remote Embedding for the workspace, use local
107
+ FTS only, or cancel.
108
+
109
+ Qoder IDE uses the exact native tool name `ask_user_question`, but its official
110
+ integration does not provide a global Rules location where the installer can
111
+ persist the fallback. In stdio mode, the zvec-grep bridge turns a missing
112
+ `elicitation/create` handler into an actionable error that tells the top-level
113
+ IDE agent to present the same three choices with `ask_user_question`. This path
114
+ still needs an end-to-end smoke test in a real Qoder IDE session and should not
115
+ be treated as proof that every IDE build follows the instruction.
116
+
117
+ Only after explicit workspace approval may either client run the following
118
+ persistent grant and retry the original MCP search once:
119
+
120
+ ```bash
121
+ zg --auth grant "/absolute/workspace" \
122
+ --capability embedding \
123
+ --scope workspace
124
+ ```
125
+
126
+ The local-FTS choice retries the search without `query`, `queries`, or `vector`
127
+ routes and with `autoUpdate: false` and `freshness: "eventual"`. It neither
128
+ refreshes the remote-embedding index nor sends query text or workspace content
129
+ to a remote Embedding provider. In a headless session where Qoder cannot ask the
130
+ user, the agent stops without granting access. Neither question tool should
131
+ collect a token, API key, or password. Provider credentials remain separate
132
+ from this data authorization.
133
+
134
+ Restart the selected agent, or open a new session, after installation.
135
+
136
+ ## How the agent searches
137
+
138
+ The agent routes in two stages: first it decides whether the answer should be
139
+ grounded in the current indexed workspace, then it chooses exact or semantic
140
+ retrieval. Code versus non-code is not the boundary; a workspace may contain any
141
+ mix of code, documents, configuration, and data.
142
+
143
+ Workspace content is the intended evidence source when the user asks to inspect,
144
+ search, or ground the answer in local files, the workspace, or its index; prior
145
+ context established local material as the intended source; or the user asks
146
+ whether relevant local material exists. Negative, incidental, or comparative
147
+ workspace mentions do not establish relevance. Tool availability or topic
148
+ overlap alone does not establish workspace relevance.
149
+
150
+ The default MCP surface gives the agent one indexed search tool and leaves exact
151
+ lexical lookup to the agent's native tools:
152
+
153
+ | Intent | Tool |
154
+ | --- | --- |
155
+ | Workspace-grounded exact words, quotations, names, dates, keys, filenames, paths, or regexes are sufficient | Native grep or rg |
156
+ | Workspace-grounded wording or location is unknown, or the answer requires semantic, fuzzy, relationship, chronology, causality, comparison, or cross-file synthesis | `zvec_grep_search` |
157
+ | Exact anchors are known but the answer requires broader context or synthesis | `zvec_grep_search`, then native grep or rg |
158
+ | The answer is unrelated open-world knowledge, a current external fact, or web content that does not depend on local evidence | The appropriate external source, not zvec-grep |
159
+
160
+ `zvec_grep_search` needs an existing index. Managed rg remains available through
161
+ `zg --rg` and through the optional `full` MCP toolset. See the
162
+ [Pipeline guide](./04-pipeline.md) for the distinction and the
163
+ [MCP guide](./03-mcp.md) for tool inputs.
164
+
165
+ When semantic discovery is selected because no sufficient exact anchor is
166
+ available and the user asks whether conceptually related material exists
167
+ locally, the agent makes at most one focused `zvec_grep_search` probe and stops
168
+ when the results are not relevant. Exact quotations, configuration keys,
169
+ filenames, regexes, and exhaustive occurrence requests stay on the exact route.
170
+
171
+ ## Verify the setup
172
+
173
+ Check the server first:
174
+
175
+ ```bash
176
+ zg --server status --check-ready
177
+ ```
178
+
179
+ Then start a new agent session and confirm that the client-specific search tool
180
+ is available. It is `zvec_grep_search` in Codex and Claude Code,
181
+ `mcp__zvec_grep__zvec_grep_search` in Qwen Code and Qoder CLI, and
182
+ `zvec_grep_zvec_grep_search` in OpenCode. With the optional `full` MCP toolset,
183
+ Qoder CLI exposes managed rg as `mcp__zvec_grep__zvec_grep_rg`. For Qoder IDE,
184
+ confirm after restart that the `zvec_grep` server and its tools appear; the exact
185
+ host-qualified tool label remains part of the real-machine smoke test. If the
186
+ MCP connection is unavailable, the same indexed search and optional managed-rg
187
+ route remain available from the shell:
188
+
189
+ ```bash
190
+ zg "where theme preferences are restored"
191
+ zg --rg -F "loadTheme" src
192
+ ```
193
+
194
+ ## Permissions and remote data
195
+
196
+ The server listens on loopback and has no token by default. See
197
+ [Server authentication](./06-server.md#bearer-authentication) when a local Bearer
198
+ token is required.
199
+
200
+ MCP tool approval only authorizes calls to the local server. It does **not**
201
+ authorize sending query text or workspace content to a remote Embedding
202
+ provider. Remote Embedding asks separately on first use; see
203
+ [Embedding models](./07-embedding.md#remote-embedding-and-authorization).
204
+
205
+ ## Remove an integration
206
+
207
+ Use the same target names to remove only zvec-grep-managed entries:
208
+
209
+ ```bash
210
+ zg --uninstall --target codex --yes
211
+ zg --uninstall --target qwen --yes
212
+ zg --uninstall --target qoder --yes
213
+ zg --uninstall --target all --yes
214
+ ```
215
+
216
+ Restart the agent or open a new session to apply the change. Uninstalling an
217
+ agent integration does not delete repository indexes or the npm package.
package/docs/02-cli.md ADDED
@@ -0,0 +1,259 @@
1
+ # CLI guide
2
+
3
+ [Documentation](./README.md) · [Agents](./01-agents.md) ·
4
+ [CLI](./02-cli.md) · [MCP](./03-mcp.md) · [Pipeline](./04-pipeline.md) ·
5
+ [Architecture](./05-architecture.md) · [Server](./06-server.md) ·
6
+ [Embedding](./07-embedding.md) · [Roadmap](./08-roadmap.md)
7
+
8
+ The `zg` command is a search interface first. Positional arguments are always
9
+ queries; maintenance operations use long action options so ordinary words such
10
+ as `index`, `install`, and `status` never collide with commands. Use the
11
+ installed CLI for version-specific help:
12
+
13
+ To expose accidental use of the old command shape without making it an alias,
14
+ a leading command-shaped word such as `query`, `index`, or `install` emits a
15
+ warning on stderr and is still parsed as search input. Use `zg -- query` (or
16
+ another literal word after `--`) to make that search intent explicit and
17
+ suppress the warning.
18
+
19
+ ```bash
20
+ zg --help
21
+ zg --help search
22
+ zg --help models
23
+ zg --help file-types
24
+ zg --help environment
25
+ zg --index --help
26
+ ```
27
+
28
+ ## Interface overview
29
+
30
+ | Form | Purpose |
31
+ | --- | --- |
32
+ | `zg <query>` | Search an index or run managed ripgrep |
33
+ | `--index` | Build, update, rebuild, or drop a Workspace index |
34
+ | `--status` | Inspect Workspace and index state |
35
+ | `--install` / `--uninstall` | Manage agent integrations |
36
+ | `--config` | Configure provider credentials and model defaults |
37
+ | `--auth` | Manage Remote Embedding authorization |
38
+ | `--server` | Manage the shared MCP server |
39
+ | `--help` / `--version` | Show help or the installed version |
40
+
41
+ ## `zg`
42
+
43
+ ```text
44
+ zg <query> [options]
45
+ zg --hybrid <query> --fts <query> --vector <query> [--fuse]
46
+ zg --rg [rg-options] <pattern> [path...]
47
+ ```
48
+
49
+ Search routes:
50
+
51
+ | Option | Meaning |
52
+ | --- | --- |
53
+ | positional query | Hybrid lexical and vector retrieval |
54
+ | `--hybrid <query>` | Add an explicit hybrid query group |
55
+ | `--fts <query>` | Add a ranked lexical query group |
56
+ | `--vector <query>` | Add a semantic-only query group |
57
+ | `--fuse` | Combine all groups into one ranked plan |
58
+ | `--rg` | Run exhaustive managed ripgrep without an index |
59
+
60
+ Result controls:
61
+
62
+ | Option | Meaning |
63
+ | --- | --- |
64
+ | `--limit <n>` | Maximum returned items per group |
65
+ | `--compact` | Force compact output intended for pipes |
66
+ | `--preview none\|short\|full` | Indexed source preview size |
67
+ | `--refresh background\|wait\|off` | Index refresh policy |
68
+ | `--mode direct\|server\|auto` | Execution transport |
69
+ | `--debug` | Print diagnostics to stderr |
70
+ | `--trace` | Add per-hit indexed search trace |
71
+ | `--prefer-symbol` | Prefer an exact indexed symbol |
72
+ | `--symbol-type <type>` | Restrict results to a symbol type |
73
+ | `--modified-after <time>` | Search files modified after a time |
74
+ | `--modified-before <time>` | Search files modified before a time |
75
+
76
+ Indexed CLI results are separated by query group and preserve the rank assigned
77
+ inside that group. The CLI does not apply the MCP response's cross-group
78
+ coverage/global-fill presentation. A result recalled by several groups appears
79
+ under each of those groups. `--limit` continues to bound each group.
80
+
81
+ Valid symbol types are `module`, `class`, `interface`, `function`, `value`, and
82
+ `alias`.
83
+
84
+ Common scope options for indexed search are `-g/--glob`, `--iglob`, `-t/--type`,
85
+ and `-T/--type-not`. Managed rg additionally supports common ripgrep matching,
86
+ context, discovery, encoding, and regex-engine flags.
87
+
88
+ If no index exists, `zg` creates one with a local embedding model before the
89
+ first indexed search. A configured local model is respected; a configured
90
+ remote model is not used implicitly. Use `zg --index` when you want to choose a
91
+ remote model, narrow the indexed paths, rebuild, or drop the index.
92
+
93
+ Examples:
94
+
95
+ ```bash
96
+ zg "theme preference persistence on startup"
97
+ zg --fts "loadTheme" -g "src/**" -t ts
98
+ zg --vector "where user preferences are restored" --limit 5
99
+ zg "plugin lifecycle" --preview full
100
+ zg --rg -i -C 2 -g "*.ts" "dark mode" src
101
+ ```
102
+
103
+ See [Retrieval pipeline](./04-pipeline.md#3-query-through-one-search-layer) for
104
+ route selection and freshness behavior.
105
+
106
+ ## `zg --index`
107
+
108
+ ```text
109
+ zg --index [root] [options]
110
+ zg --index [root] --rebuild [options]
111
+ zg --index [root] --drop [--yes]
112
+ ```
113
+
114
+ Core options:
115
+
116
+ | Option | Meaning |
117
+ | --- | --- |
118
+ | `--embedding <model>` | Model for a new or rebuilt index |
119
+ | `--rebuild` | Recreate an existing index |
120
+ | `--drop` | Permanently remove the Workspace index |
121
+ | `--yes` | Confirm `--drop` without a prompt |
122
+ | `--reset-paths` | Replace stored file-selection settings |
123
+ | `--mode direct\|server\|auto` | Execution transport |
124
+ | `--api-key <key>` | One-command provider credential |
125
+ | `--endpoint <url>` | Remote provider endpoint |
126
+ | `--model-cache <path>` | Local model cache directory |
127
+ | `--device <device>` | `auto`, `cpu`, `metal`, `vulkan`, or `cuda` |
128
+ | `--embedding-concurrency <n>` | Concurrent Embedding tasks |
129
+ | `--allow-remote` | Authorize Remote Embedding for this command |
130
+
131
+ Local Potion embedding tasks run on worker threads. They default to two workers;
132
+ `--embedding-concurrency` can override that value for larger machines.
133
+
134
+ File discovery accepts `-g/--glob`, `--iglob`, `-t/--type`, `-T/--type-not`,
135
+ `--hidden`, `--no-ignore`, `--ignore-file`, `--max-depth`, `--max-filesize`, and
136
+ `-L/--follow`.
137
+
138
+ Examples:
139
+
140
+ ```bash
141
+ zg --index --embedding local/potion-code-16m-v2
142
+ zg --index
143
+ zg --index --rebuild --embedding local/jina-embeddings-v2-base-code
144
+ zg --index --drop --yes
145
+ ```
146
+
147
+ ## `zg --status`
148
+
149
+ ```text
150
+ zg --status [root] [--mode direct|server|auto] [--check-ready]
151
+ ```
152
+
153
+ Status includes the selected root, index policy, stored schema and paths, file
154
+ counts, refresh state, and a suggested next action. `--check-ready` preserves
155
+ normal output and exits non-zero unless the index is ready, which is useful in
156
+ scripts.
157
+
158
+ ## `zg --install` and `zg --uninstall`
159
+
160
+ ```text
161
+ zg --install [--target codex|claude|qwen|qoder|opencode|cursor|all|auto] [--mcp-transport stdio|http] [--mcp-toolset agent|full] [--yes] [--force]
162
+ zg --uninstall [--target codex|claude|qwen|qoder|opencode|cursor|all|auto] [--yes]
163
+ ```
164
+
165
+ `--target` is repeatable. `qoder` is the single Qoder target and configures
166
+ Qoder CLI and Qoder IDE together. `zg --install` also accepts:
167
+
168
+ | Option | Meaning |
169
+ | --- | --- |
170
+ | `--mcp-transport <stdio\|http>` | MCP connection mode; default `stdio` |
171
+ | `--mcp-toolset <agent\|full>` | Daemon MCP surface; default `agent` |
172
+ | `--mcp-tool-timeout <seconds>` | Codex, Qwen Code, both Qoder clients, and OpenCode MCP timeout; default 600 seconds |
173
+ | `--mcp-token-env <name>` | Environment variable containing the server token |
174
+ | `--force` | Replace a conflicting unmanaged `zvec_grep` entry |
175
+
176
+ See [Agent integrations](./01-agents.md) before using `--force`.
177
+
178
+ ## `zg --config`
179
+
180
+ ```text
181
+ zg --config provider set <provider> --api-key <key>
182
+ zg --config model set <model> [--endpoint <url> | --device <device>] [--default]
183
+ ```
184
+
185
+ Examples:
186
+
187
+ ```bash
188
+ zg --config provider set qwen --api-key "$DASHSCOPE_API_KEY"
189
+ zg --config model set qwen/text-embedding-v4 --default
190
+ zg --config model set local/potion-code-16m-v2 --device metal
191
+ ```
192
+
193
+ Global configuration is stored in `~/.zvec-grep/config.json`. Existing indexes
194
+ continue to use their stored model until explicitly rebuilt.
195
+
196
+ ## `zg --auth`
197
+
198
+ ```text
199
+ zg --auth grant [root] --capability embedding --scope workspace [--embedding <model>]
200
+ zg --auth status [root]
201
+ zg --auth revoke [root]
202
+ ```
203
+
204
+ Workspace grants are stored under `.zvec-grep/authorization.json` and shared by
205
+ the CLI and MCP server. `--allow-remote` is the non-persistent alternative for
206
+ one search or `--index` operation. `--embedding` selects the Remote Embedding model
207
+ to authorize; it does not run embedding. It may be omitted when the model can be
208
+ resolved from the existing Workspace index, `ZVEC_GREP_EMBEDDING`, or the global
209
+ default, in that order.
210
+
211
+ ## `zg --server`
212
+
213
+ ```text
214
+ zg --server on [--listen 127.0.0.1:7999] [--token-file <path>] [--mcp-toolset agent|full]
215
+ zg --server off [--token-file <path>]
216
+ zg --server status [--check-ready]
217
+ zg --server run [--listen 127.0.0.1:7999] [--token-file <path>] [--mcp-toolset agent|full]
218
+ ```
219
+
220
+ `on` starts the background daemon; `run` keeps it in the foreground. The server
221
+ only accepts loopback listen addresses. The default public endpoint is
222
+ `http://127.0.0.1:7999/mcp` with the `agent` toolset.
223
+
224
+ See [Server and execution modes](./06-server.md) for mode selection, lifecycle,
225
+ refresh, authentication, and logs. See [MCP](./03-mcp.md) for the tool contract.
226
+
227
+ ## Environment variables
228
+
229
+ | Variable | Purpose |
230
+ | --- | --- |
231
+ | `ZVEC_GREP_HOME` | Override zvec-grep state directory |
232
+ | `ZVEC_GREP_MODE` | Default `direct`, `server`, or `auto` transport |
233
+ | `ZVEC_GREP_SERVER_URL` | Override the MCP server URL used by clients |
234
+ | `ZVEC_GREP_SERVER_TOKEN` | Server/client Bearer token |
235
+ | `ZVEC_GREP_SERVER_TOKEN_FILE` | File containing the server/client token |
236
+ | `ZVEC_GREP_MCP_TOOLSET` | Default `agent` or `full` MCP surface |
237
+ | `ZVEC_GREP_WATCHER_IDLE_TIMEOUT_SECONDS` | Seconds of workspace inactivity before the server releases its watcher; default `14400`, `0` disables idle eviction |
238
+ | `ZVEC_GREP_EMBEDDING` | Default model for new indexes |
239
+ | `ZVEC_GREP_API_KEY` | Embedding provider API key |
240
+ | `ZVEC_GREP_ENDPOINT` | Remote Embedding endpoint |
241
+ | `ZVEC_GREP_MODEL_CACHE` | Local model cache directory |
242
+ | `ZVEC_GREP_DEVICE` | Local model device |
243
+ | `DASHSCOPE_API_KEY` | Qwen API-key fallback after `ZVEC_GREP_API_KEY` |
244
+ | `QWEN_API_KEY` | Qwen API-key fallback after `DASHSCOPE_API_KEY` |
245
+ | `QWEN_HOME` | Qwen Code configuration directory used by `zg --install` |
246
+ | `QODER_CONFIG_DIR` | Qoder CLI configuration directory used by `zg --install` |
247
+ | `QODER_IDE_MCP_PATH` | Full Qoder IDE `mcp.json` path used by `zg --install` |
248
+ | `QODER_IDE_EXECUTABLE` | Qoder IDE executable used for automatic install-target detection |
249
+
250
+ Run `zg --help environment` for advanced variables, agent integration paths,
251
+ scope, and detailed precedence. A new index selects its model in this order:
252
+ explicit `--embedding`, `ZVEC_GREP_EMBEDDING`, the global default, then the
253
+ built-in local default. Existing indexes continue to use their stored model
254
+ unless `--embedding` and `--rebuild` explicitly change it.
255
+
256
+ Embedding runtime values such as endpoint and device retain this order: explicit
257
+ command option, Workspace snapshot, global configuration, then environment.
258
+ `zg --index` forwards its `ZVEC_GREP_EMBEDDING` value in server and auto modes;
259
+ direct MCP calls use the environment inherited when the daemon started.