@zvec/zvec-grep 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/README.md +88 -249
  2. package/README_CN.md +82 -246
  3. package/dist/authorization/index.d.ts +7 -0
  4. package/dist/authorization/index.js +7 -0
  5. package/dist/authorization/index.js.map +1 -0
  6. package/dist/authorization/manager.d.ts +8 -0
  7. package/dist/authorization/manager.js +19 -0
  8. package/dist/authorization/manager.js.map +1 -0
  9. package/dist/authorization/operation.d.ts +7 -0
  10. package/dist/authorization/operation.js +50 -0
  11. package/dist/authorization/operation.js.map +1 -0
  12. package/dist/authorization/planner.d.ts +21 -0
  13. package/dist/authorization/planner.js +97 -0
  14. package/dist/authorization/planner.js.map +1 -0
  15. package/dist/authorization/prompt.d.ts +11 -0
  16. package/dist/authorization/prompt.js +62 -0
  17. package/dist/authorization/prompt.js.map +1 -0
  18. package/dist/authorization/store.d.ts +20 -0
  19. package/dist/authorization/store.js +251 -0
  20. package/dist/authorization/store.js.map +1 -0
  21. package/dist/authorization/target.d.ts +15 -0
  22. package/dist/authorization/target.js +49 -0
  23. package/dist/authorization/target.js.map +1 -0
  24. package/dist/authorization/types.d.ts +61 -0
  25. package/dist/authorization/types.js +2 -0
  26. package/dist/authorization/types.js.map +1 -0
  27. package/dist/cli/args.d.ts +1 -1
  28. package/dist/cli/args.js +304 -54
  29. package/dist/cli/args.js.map +1 -1
  30. package/dist/cli/auth.d.ts +21 -0
  31. package/dist/cli/auth.js +212 -0
  32. package/dist/cli/auth.js.map +1 -0
  33. package/dist/cli/commands.js +433 -618
  34. package/dist/cli/commands.js.map +1 -1
  35. package/dist/cli/errors.js +2 -2
  36. package/dist/cli/errors.js.map +1 -1
  37. package/dist/cli/format/context.d.ts +1 -0
  38. package/dist/cli/format/context.js +241 -45
  39. package/dist/cli/format/context.js.map +1 -1
  40. package/dist/cli/format/debug.js +2 -2
  41. package/dist/cli/format/debug.js.map +1 -1
  42. package/dist/cli/format/progress.d.ts +4 -0
  43. package/dist/cli/format/progress.js +219 -46
  44. package/dist/cli/format/progress.js.map +1 -1
  45. package/dist/cli/format/status.d.ts +77 -6
  46. package/dist/cli/format/status.js +302 -106
  47. package/dist/cli/format/status.js.map +1 -1
  48. package/dist/cli/help.js +258 -59
  49. package/dist/cli/help.js.map +1 -1
  50. package/dist/cli/index.js +0 -0
  51. package/dist/cli/install.d.ts +4 -0
  52. package/dist/cli/install.js +845 -0
  53. package/dist/cli/install.js.map +1 -0
  54. package/dist/cli/managed-rg.d.ts +10 -0
  55. package/dist/cli/managed-rg.js +329 -0
  56. package/dist/cli/managed-rg.js.map +1 -0
  57. package/dist/cli/types.d.ts +20 -6
  58. package/dist/cli/types.js.map +1 -1
  59. package/dist/client/daemon-client.d.ts +19 -0
  60. package/dist/client/daemon-client.js +180 -0
  61. package/dist/client/daemon-client.js.map +1 -0
  62. package/dist/client/mode-router.d.ts +9 -0
  63. package/dist/client/mode-router.js +28 -0
  64. package/dist/client/mode-router.js.map +1 -0
  65. package/dist/client/search-policy.d.ts +11 -0
  66. package/dist/client/search-policy.js +15 -0
  67. package/dist/client/search-policy.js.map +1 -0
  68. package/dist/daemon/backend.d.ts +76 -0
  69. package/dist/daemon/backend.js +1049 -0
  70. package/dist/daemon/backend.js.map +1 -0
  71. package/dist/daemon/change-set.d.ts +25 -0
  72. package/dist/daemon/change-set.js +101 -0
  73. package/dist/daemon/change-set.js.map +1 -0
  74. package/dist/daemon/config.d.ts +24 -0
  75. package/dist/daemon/config.js +88 -0
  76. package/dist/daemon/config.js.map +1 -0
  77. package/dist/daemon/errors.d.ts +5 -0
  78. package/dist/daemon/errors.js +11 -0
  79. package/dist/daemon/errors.js.map +1 -0
  80. package/dist/daemon/http-server.d.ts +30 -0
  81. package/dist/daemon/http-server.js +287 -0
  82. package/dist/daemon/http-server.js.map +1 -0
  83. package/dist/daemon/index-coordinator.d.ts +23 -0
  84. package/dist/daemon/index-coordinator.js +68 -0
  85. package/dist/daemon/index-coordinator.js.map +1 -0
  86. package/dist/daemon/job-scheduler.d.ts +70 -0
  87. package/dist/daemon/job-scheduler.js +366 -0
  88. package/dist/daemon/job-scheduler.js.map +1 -0
  89. package/dist/daemon/logger.d.ts +9 -0
  90. package/dist/daemon/logger.js +53 -0
  91. package/dist/daemon/logger.js.map +1 -0
  92. package/dist/daemon/model-pool.d.ts +45 -0
  93. package/dist/daemon/model-pool.js +187 -0
  94. package/dist/daemon/model-pool.js.map +1 -0
  95. package/dist/daemon/root-lease.d.ts +14 -0
  96. package/dist/daemon/root-lease.js +188 -0
  97. package/dist/daemon/root-lease.js.map +1 -0
  98. package/dist/daemon/root-runtime.d.ts +78 -0
  99. package/dist/daemon/root-runtime.js +333 -0
  100. package/dist/daemon/root-runtime.js.map +1 -0
  101. package/dist/daemon/runtime-manager.d.ts +45 -0
  102. package/dist/daemon/runtime-manager.js +243 -0
  103. package/dist/daemon/runtime-manager.js.map +1 -0
  104. package/dist/daemon/runtime.d.ts +12 -0
  105. package/dist/daemon/runtime.js +102 -0
  106. package/dist/daemon/runtime.js.map +1 -0
  107. package/dist/daemon/server-controller.d.ts +39 -0
  108. package/dist/daemon/server-controller.js +203 -0
  109. package/dist/daemon/server-controller.js.map +1 -0
  110. package/dist/daemon/watch-manager.d.ts +50 -0
  111. package/dist/daemon/watch-manager.js +293 -0
  112. package/dist/daemon/watch-manager.js.map +1 -0
  113. package/dist/daemon/workspace-read-session-cache.d.ts +31 -0
  114. package/dist/daemon/workspace-read-session-cache.js +115 -0
  115. package/dist/daemon/workspace-read-session-cache.js.map +1 -0
  116. package/dist/engine/config.d.ts +30 -8
  117. package/dist/engine/config.js +171 -45
  118. package/dist/engine/config.js.map +1 -1
  119. package/dist/engine/{errors/index.d.ts → errors.d.ts} +6 -1
  120. package/dist/engine/{errors/details.js → errors.js} +17 -4
  121. package/dist/engine/errors.js.map +1 -0
  122. package/dist/engine/extraction/code/adapter.d.ts +1 -1
  123. package/dist/engine/extraction/code/extractor.d.ts +5 -11
  124. package/dist/engine/extraction/code/extractor.js +105 -44
  125. package/dist/engine/extraction/code/extractor.js.map +1 -1
  126. package/dist/engine/extraction/code/families/c-family.js +1 -1
  127. package/dist/engine/extraction/code/families/c-family.js.map +1 -1
  128. package/dist/engine/extraction/code/families/js-ts.d.ts +1 -1
  129. package/dist/engine/extraction/code/families/metadata.d.ts +1 -1
  130. package/dist/engine/extraction/code/tree-sitter/grammar.js.map +1 -0
  131. package/dist/engine/extraction/code/tree-sitter/nodes.js.map +1 -0
  132. package/dist/engine/extraction/code/tree-sitter/parser.js.map +1 -0
  133. package/dist/engine/extraction/image/extractor.d.ts +5 -0
  134. package/dist/engine/extraction/image/extractor.js +35 -0
  135. package/dist/engine/extraction/image/extractor.js.map +1 -0
  136. package/dist/engine/extraction/index.d.ts +3 -44
  137. package/dist/engine/extraction/index.js +1 -280
  138. package/dist/engine/extraction/index.js.map +1 -1
  139. package/dist/engine/extraction/markdown/extractor.d.ts +5 -11
  140. package/dist/engine/extraction/markdown/extractor.js +35 -16
  141. package/dist/engine/extraction/markdown/extractor.js.map +1 -1
  142. package/dist/engine/extraction/runtime.d.ts +4 -0
  143. package/dist/engine/extraction/runtime.js +26 -0
  144. package/dist/engine/extraction/runtime.js.map +1 -0
  145. package/dist/engine/extraction/source.d.ts +18 -0
  146. package/dist/engine/extraction/source.js +22 -0
  147. package/dist/engine/extraction/source.js.map +1 -0
  148. package/dist/engine/extraction/text/extractor.d.ts +7 -0
  149. package/dist/engine/extraction/text/extractor.js +168 -0
  150. package/dist/engine/extraction/text/extractor.js.map +1 -0
  151. package/dist/engine/extraction/types.d.ts +4 -0
  152. package/dist/engine/{models → extraction}/types.js.map +1 -1
  153. package/dist/engine/{files/file-type.d.ts → file-type.d.ts} +1 -1
  154. package/dist/engine/file-type.js.map +1 -0
  155. package/dist/engine/index-status.d.ts +9 -0
  156. package/dist/engine/index-status.js +38 -0
  157. package/dist/engine/index-status.js.map +1 -0
  158. package/dist/engine/manifest.d.ts +12 -0
  159. package/dist/engine/manifest.js +120 -0
  160. package/dist/engine/manifest.js.map +1 -0
  161. package/dist/engine/models/{providers/llama-cpp/embedding.d.ts → backends/llama-cpp.d.ts} +25 -20
  162. package/dist/engine/models/{providers/llama-cpp/embedding.js → backends/llama-cpp.js} +127 -106
  163. package/dist/engine/models/backends/llama-cpp.js.map +1 -0
  164. package/dist/engine/models/backends/model2vec.d.ts +57 -0
  165. package/dist/engine/models/backends/model2vec.js +332 -0
  166. package/dist/engine/models/backends/model2vec.js.map +1 -0
  167. package/dist/engine/models/backends/qwen.d.ts +44 -0
  168. package/dist/engine/models/{providers/qwen/embedding.js → backends/qwen.js} +155 -94
  169. package/dist/engine/models/backends/qwen.js.map +1 -0
  170. package/dist/engine/models/backends/transformers-js.d.ts +87 -0
  171. package/dist/engine/models/backends/transformers-js.js +316 -0
  172. package/dist/engine/models/backends/transformers-js.js.map +1 -0
  173. package/dist/engine/models/catalog.d.ts +188 -23
  174. package/dist/engine/models/catalog.js +172 -25
  175. package/dist/engine/models/catalog.js.map +1 -1
  176. package/dist/engine/models/download-progress.d.ts +15 -0
  177. package/dist/engine/models/download-progress.js +48 -0
  178. package/dist/engine/models/download-progress.js.map +1 -0
  179. package/dist/engine/models/embeddings.d.ts +58 -18
  180. package/dist/engine/models/embeddings.js +52 -28
  181. package/dist/engine/models/embeddings.js.map +1 -1
  182. package/dist/engine/models/factory.d.ts +2 -5
  183. package/dist/engine/models/factory.js +41 -56
  184. package/dist/engine/models/factory.js.map +1 -1
  185. package/dist/engine/models/index.d.ts +4 -6
  186. package/dist/engine/models/index.js +4 -4
  187. package/dist/engine/models/index.js.map +1 -1
  188. package/dist/engine/models/ranking.d.ts +7 -3
  189. package/dist/engine/models/resolution.d.ts +8 -0
  190. package/dist/engine/models/resolution.js +22 -0
  191. package/dist/engine/models/resolution.js.map +1 -0
  192. package/dist/engine/pipeline/indexing/index.d.ts +9 -7
  193. package/dist/engine/pipeline/indexing/index.js +360 -121
  194. package/dist/engine/pipeline/indexing/index.js.map +1 -1
  195. package/dist/engine/pipeline/indexing/root-paths.js +6 -6
  196. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -1
  197. package/dist/engine/pipeline/indexing/scanner/index.d.ts +6 -1
  198. package/dist/engine/pipeline/indexing/scanner/index.js +233 -29
  199. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
  200. package/dist/engine/pipeline/search/index.d.ts +6 -6
  201. package/dist/engine/pipeline/search/index.js +8 -10
  202. package/dist/engine/pipeline/search/index.js.map +1 -1
  203. package/dist/engine/service/index.d.ts +3 -2
  204. package/dist/engine/service/index.js +1 -1
  205. package/dist/engine/service/index.js.map +1 -1
  206. package/dist/engine/service/root.d.ts +13 -12
  207. package/dist/engine/service/root.js +35 -24
  208. package/dist/engine/service/root.js.map +1 -1
  209. package/dist/engine/service/structure-enrichment.js +12 -14
  210. package/dist/engine/service/structure-enrichment.js.map +1 -1
  211. package/dist/engine/service/types.d.ts +32 -37
  212. package/dist/engine/service/workspace-index.d.ts +24 -0
  213. package/dist/engine/service/workspace-index.js +151 -0
  214. package/dist/engine/service/workspace-index.js.map +1 -0
  215. package/dist/engine/service/zvec-grep.d.ts +12 -1
  216. package/dist/engine/service/zvec-grep.js +677 -486
  217. package/dist/engine/service/zvec-grep.js.map +1 -1
  218. package/dist/engine/storage/index.d.ts +8 -4
  219. package/dist/engine/storage/index.js +1 -1
  220. package/dist/engine/storage/index.js.map +1 -1
  221. package/dist/engine/storage/zvec.d.ts +10 -33
  222. package/dist/engine/storage/zvec.js +95 -38
  223. package/dist/engine/storage/zvec.js.map +1 -1
  224. package/dist/engine/types.d.ts +15 -23
  225. package/dist/engine/types.js +1 -1
  226. package/dist/engine/types.js.map +1 -1
  227. package/dist/engine/utils/daemon-lease.d.ts +17 -0
  228. package/dist/engine/utils/daemon-lease.js +175 -0
  229. package/dist/engine/utils/daemon-lease.js.map +1 -0
  230. package/dist/engine/utils/file-selection.js +38 -1
  231. package/dist/engine/utils/file-selection.js.map +1 -1
  232. package/dist/engine/utils/lock.js +1 -1
  233. package/dist/engine/utils/lock.js.map +1 -1
  234. package/dist/index-progress.d.ts +10 -0
  235. package/dist/index-progress.js +159 -0
  236. package/dist/index-progress.js.map +1 -0
  237. package/dist/index.d.ts +4 -4
  238. package/dist/index.js +1 -1
  239. package/dist/index.js.map +1 -1
  240. package/dist/mcp/http-transport.d.ts +27 -0
  241. package/dist/mcp/http-transport.js +182 -0
  242. package/dist/mcp/http-transport.js.map +1 -0
  243. package/dist/mcp/input-normalization.d.ts +38 -0
  244. package/dist/mcp/input-normalization.js +95 -0
  245. package/dist/mcp/input-normalization.js.map +1 -0
  246. package/dist/mcp/progress-heartbeat.d.ts +17 -0
  247. package/dist/mcp/progress-heartbeat.js +46 -0
  248. package/dist/mcp/progress-heartbeat.js.map +1 -0
  249. package/dist/mcp/request-metadata.d.ts +2 -0
  250. package/dist/mcp/request-metadata.js +11 -0
  251. package/dist/mcp/request-metadata.js.map +1 -0
  252. package/dist/mcp/request-state.d.ts +40 -0
  253. package/dist/mcp/request-state.js +210 -0
  254. package/dist/mcp/request-state.js.map +1 -0
  255. package/dist/mcp/result-format.d.ts +13 -0
  256. package/dist/mcp/result-format.js +75 -0
  257. package/dist/mcp/result-format.js.map +1 -0
  258. package/dist/mcp/schemas.d.ts +430 -0
  259. package/dist/mcp/schemas.js +447 -0
  260. package/dist/mcp/schemas.js.map +1 -0
  261. package/dist/mcp/tools.d.ts +150 -0
  262. package/dist/mcp/tools.js +448 -0
  263. package/dist/mcp/tools.js.map +1 -0
  264. package/dist/mcp/toolset.d.ts +5 -0
  265. package/dist/mcp/toolset.js +12 -0
  266. package/dist/mcp/toolset.js.map +1 -0
  267. package/dist/observability/trace-context.d.ts +11 -0
  268. package/dist/observability/trace-context.js +138 -0
  269. package/dist/observability/trace-context.js.map +1 -0
  270. package/docs/01-agents.md +111 -0
  271. package/docs/02-cli.md +229 -0
  272. package/docs/03-mcp.md +167 -0
  273. package/docs/04-pipeline.md +218 -0
  274. package/docs/05-architecture.md +86 -0
  275. package/docs/06-server.md +210 -0
  276. package/docs/07-embedding.md +179 -0
  277. package/docs/08-roadmap.md +85 -0
  278. package/docs/README.md +53 -0
  279. package/package.json +17 -8
  280. package/skills/zvec-grep/SKILL.md +43 -133
  281. package/skills/zvec-grep/agents/openai.yaml +2 -2
  282. package/skills/zvec-grep/references/cli-fallback.md +85 -0
  283. package/dist/cli/mcp.d.ts +0 -2
  284. package/dist/cli/mcp.js +0 -354
  285. package/dist/cli/mcp.js.map +0 -1
  286. package/dist/engine/collection/index.d.ts +0 -55
  287. package/dist/engine/collection/index.js +0 -710
  288. package/dist/engine/collection/index.js.map +0 -1
  289. package/dist/engine/errors/details.d.ts +0 -6
  290. package/dist/engine/errors/details.js.map +0 -1
  291. package/dist/engine/errors/index.js +0 -16
  292. package/dist/engine/errors/index.js.map +0 -1
  293. package/dist/engine/extraction/tree-sitter/grammar.js.map +0 -1
  294. package/dist/engine/extraction/tree-sitter/nodes.js.map +0 -1
  295. package/dist/engine/extraction/tree-sitter/parser.js.map +0 -1
  296. package/dist/engine/files/file-type.js.map +0 -1
  297. package/dist/engine/models/providers/index.d.ts +0 -2
  298. package/dist/engine/models/providers/index.js +0 -3
  299. package/dist/engine/models/providers/index.js.map +0 -1
  300. package/dist/engine/models/providers/llama-cpp/embedding.js.map +0 -1
  301. package/dist/engine/models/providers/llama-cpp/index.d.ts +0 -1
  302. package/dist/engine/models/providers/llama-cpp/index.js +0 -2
  303. package/dist/engine/models/providers/llama-cpp/index.js.map +0 -1
  304. package/dist/engine/models/providers/qwen/embedding.d.ts +0 -42
  305. package/dist/engine/models/providers/qwen/embedding.js.map +0 -1
  306. package/dist/engine/models/providers/qwen/index.d.ts +0 -1
  307. package/dist/engine/models/providers/qwen/index.js +0 -2
  308. package/dist/engine/models/providers/qwen/index.js.map +0 -1
  309. package/dist/engine/models/types.d.ts +0 -30
  310. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.d.ts +0 -0
  311. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/grammar.js +0 -0
  312. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.d.ts +0 -0
  313. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/nodes.js +0 -0
  314. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.d.ts +0 -0
  315. /package/dist/engine/extraction/{tree-sitter → code/tree-sitter}/parser.js +0 -0
  316. /package/dist/engine/{models → extraction}/types.js +0 -0
  317. /package/dist/engine/{files/file-type.js → file-type.js} +0 -0
@@ -1,16 +1,18 @@
1
- import type { EmbeddingModel } from "../models/embeddings.js";
2
- import type { CodeSymbolType, CollectionIndexPolicy, CollectionIndexStatus, CollectionInfo, Content, EntityMetadata, IndexProgress, IndexResult, Range, RootPath, SearchPlanRoute, SearchHitTrace, SearchMatchedBy, TimingEntry } from "../types.js";
1
+ import type { EmbeddingModel } from "../models/index.js";
2
+ import type { CodeSymbolType, WorkspaceIndexPolicy, WorkspaceIndexStatus, WorkspaceIndexInfo, Content, EntityMetadata, IndexProgress, IndexResult, Range, RootPath, SearchPlanRoute, SearchHitTrace, SearchMatchedBy, TimingEntry } from "../types.js";
3
3
  export type CreateZvecGrepOptions = {
4
4
  root?: string;
5
5
  home?: string;
6
6
  embeddingModel?: EmbeddingModel;
7
+ embeddingModelOwnership?: "owned" | "borrowed";
8
+ daemonInstanceToken?: string;
7
9
  embedding?: string;
8
10
  apiKey?: string;
9
11
  endpoint?: string;
10
12
  modelCacheDir?: string;
11
- llamaGpu?: "auto" | "metal" | "vulkan" | "cuda" | false;
12
- embeddingParallelism?: number;
13
+ device?: "auto" | "cpu" | "metal" | "vulkan" | "cuda";
13
14
  defaultEmbedding?: boolean;
15
+ authorizationSigningKeyPath?: string;
14
16
  };
15
17
  export type ZvecGrepIndexOptions = {
16
18
  root?: string;
@@ -31,19 +33,24 @@ export type ZvecGrepIndexOptions = {
31
33
  follow?: boolean;
32
34
  embeddingConcurrency?: number;
33
35
  onProgress?: (progress: IndexProgress) => void;
36
+ changedPaths?: readonly string[];
37
+ signal?: AbortSignal;
38
+ onWriterContext?: (context: ZvecGrepWriterContext) => void | (() => void | Promise<void>);
34
39
  };
40
+ export type ZvecGrepWriterContext = (options: ZvecGrepContextOptions) => Promise<ZvecGrepContextResult>;
35
41
  export type ZvecGrepInfoOptions = {
36
42
  root?: string;
43
+ includeStatus?: boolean;
37
44
  };
38
45
  export type ZvecGrepInfoResult = {
39
46
  root: string;
40
47
  indexed: boolean;
41
- indexPolicy: CollectionIndexPolicy | "undecided";
48
+ indexPolicy: WorkspaceIndexPolicy | "undecided";
42
49
  home: string;
43
50
  indexPath: string;
44
51
  source: "index" | "unindexed";
45
- collection?: CollectionInfo;
46
- status?: CollectionIndexStatus | null;
52
+ workspaceIndex?: WorkspaceIndexInfo;
53
+ status?: WorkspaceIndexStatus | null;
47
54
  suggestion?: string;
48
55
  };
49
56
  export type ZvecGrepContextRoute = SearchPlanRoute;
@@ -57,7 +64,6 @@ export type ZvecGrepContextOptions = {
57
64
  /** Fuse every query group into one ranked search plan. */
58
65
  fuse?: boolean;
59
66
  root?: string;
60
- collection?: string;
61
67
  limit?: number;
62
68
  autoUpdate?: boolean;
63
69
  onAutoUpdateProgress?: (progress: IndexProgress) => void;
@@ -103,6 +109,14 @@ export type ZvecGrepContextContainer = {
103
109
  range: Range;
104
110
  metadata?: EntityMetadata;
105
111
  };
112
+ export type ZvecGrepContextQueryGroupMatch = {
113
+ id: string;
114
+ query: string;
115
+ role: "primary" | "supplemental";
116
+ rank: number;
117
+ matchedBy: SearchMatchedBy;
118
+ };
119
+ export type ZvecGrepContextSelectionReason = "coverage" | "global_fill";
106
120
  export type ZvecGrepContextItem = {
107
121
  kind: ZvecGrepContextItemKind;
108
122
  rank: number;
@@ -119,12 +133,14 @@ export type ZvecGrepContextItem = {
119
133
  entityId?: string;
120
134
  container?: ZvecGrepContextContainer;
121
135
  trace?: SearchHitTrace;
136
+ queryGroups?: readonly ZvecGrepContextQueryGroupMatch[];
137
+ selectionReason?: ZvecGrepContextSelectionReason;
138
+ coverageGroup?: string;
122
139
  };
123
- export type ZvecGrepContextCollection = {
140
+ export type ZvecGrepContextWorkspaceIndex = {
124
141
  id: string;
125
142
  name: string;
126
143
  path: string;
127
- anonymous: boolean;
128
144
  };
129
145
  export type ZvecGrepRgDiagnostics = {
130
146
  backend: "bundled-rg" | "rg";
@@ -148,6 +164,11 @@ export type ZvecGrepStructureEnrichmentDiagnostics = {
148
164
  };
149
165
  export type ZvecGrepIndexDiagnostics = {
150
166
  hitsReturned: number;
167
+ queryGroups?: readonly {
168
+ id: string;
169
+ query: string;
170
+ role: "primary" | "supplemental";
171
+ }[];
151
172
  routes: readonly {
152
173
  id: string;
153
174
  mode: "fts" | "vector";
@@ -166,38 +187,12 @@ export type ZvecGrepContextResult = {
166
187
  root: string;
167
188
  source: ZvecGrepContextSource;
168
189
  coverage: ZvecGrepContextCoverage;
169
- collection?: ZvecGrepContextCollection;
190
+ workspaceIndex?: ZvecGrepContextWorkspaceIndex;
170
191
  items: ZvecGrepContextItem[];
171
192
  diagnostics: ZvecGrepContextDiagnostics;
172
193
  };
173
- export type ZvecGrepCollectionIndexOptions = {
174
- rebuild?: boolean;
175
- resetPaths?: boolean;
176
- includePaths?: readonly string[];
177
- excludePaths?: readonly string[];
178
- globs?: readonly string[];
179
- insensitiveGlobs?: readonly string[];
180
- fileTypes?: readonly string[];
181
- excludedFileTypes?: readonly string[];
182
- hidden?: boolean;
183
- noIgnore?: boolean;
184
- ignoreFiles?: readonly string[];
185
- maxDepth?: number;
186
- maxFileSizeBytes?: number;
187
- follow?: boolean;
188
- embeddingConcurrency?: number;
189
- onProgress?: (progress: IndexProgress) => void;
190
- };
191
- export type ZvecGrepCollections = {
192
- list(): Promise<CollectionInfo[]>;
193
- info(name: string): Promise<CollectionInfo | null>;
194
- status(name: string): Promise<CollectionIndexStatus | null>;
195
- index(name: string, paths?: string | RootPath | readonly (string | RootPath)[], options?: ZvecGrepCollectionIndexOptions): Promise<IndexResult>;
196
- remove(name: string): Promise<boolean>;
197
- };
198
194
  export type ZvecGrep = {
199
195
  readonly root: string;
200
- readonly collections: ZvecGrepCollections;
201
196
  index(options?: ZvecGrepIndexOptions): Promise<IndexResult>;
202
197
  dropIndex(options?: ZvecGrepInfoOptions): Promise<boolean>;
203
198
  disableIndex(options?: ZvecGrepInfoOptions): Promise<ZvecGrepInfoResult>;
@@ -0,0 +1,24 @@
1
+ import type { EmbeddingModel } from "../models/index.js";
2
+ import type { WorkspaceIndexEmbeddingSchema, WorkspaceIndexStatus, WorkspaceIndexInfo, IndexOptions, IndexResult, SearchPlan, SearchPlanResult } from "../types.js";
3
+ export declare class WorkspaceIndex {
4
+ readonly info: WorkspaceIndexInfo;
5
+ private readonly embeddingModel?;
6
+ private readonly readOnly;
7
+ private readonly fileStorePath;
8
+ private readonly storage;
9
+ private readonly embedding;
10
+ private closed;
11
+ constructor(info: WorkspaceIndexInfo, embeddingModel?: EmbeddingModel | undefined, readOnly?: boolean, fileStorePath?: string);
12
+ get name(): string;
13
+ index(options?: IndexOptions): Promise<IndexResult>;
14
+ status(): Promise<WorkspaceIndexStatus>;
15
+ searchPlan(plan: SearchPlan): Promise<SearchPlanResult>;
16
+ close(): void;
17
+ private validateIndexVersion;
18
+ private validateEmbeddingSchema;
19
+ private requireEmbeddingModel;
20
+ }
21
+ export declare function isWorkspaceIndexed(info: WorkspaceIndexInfo | null | undefined): info is WorkspaceIndexInfo & {
22
+ embedding: WorkspaceIndexEmbeddingSchema;
23
+ indexVersion: number;
24
+ };
@@ -0,0 +1,151 @@
1
+ import { join } from "node:path";
2
+ import { workspaceIndexDetail, detail, EngineError, errorDetails, } from "../errors.js";
3
+ import { getWorkspaceIndexStatus, indexWorkspace, indexWorkspacePaths, } from "../pipeline/indexing/index.js";
4
+ import { searchWorkspaceIndex } from "../pipeline/search/index.js";
5
+ import { ZvecWorkspaceIndexStorage } from "../storage/zvec.js";
6
+ import { CURRENT_INDEX_VERSION } from "../types.js";
7
+ const FILES_ZVEC = "files.zvec";
8
+ export class WorkspaceIndex {
9
+ info;
10
+ embeddingModel;
11
+ readOnly;
12
+ fileStorePath;
13
+ storage;
14
+ embedding;
15
+ closed = false;
16
+ constructor(info, embeddingModel, readOnly = false, fileStorePath = join(info.path, FILES_ZVEC)) {
17
+ this.info = info;
18
+ this.embeddingModel = embeddingModel;
19
+ this.readOnly = readOnly;
20
+ this.fileStorePath = fileStorePath;
21
+ this.embedding = requireWorkspaceIndexEmbedding(info, "open");
22
+ this.validateIndexVersion();
23
+ if (this.embeddingModel) {
24
+ this.validateEmbeddingSchema(this.embeddingModel);
25
+ }
26
+ this.storage = new ZvecWorkspaceIndexStorage(info.path, this.embedding, this.fileStorePath, readOnly);
27
+ }
28
+ get name() {
29
+ return this.info.name;
30
+ }
31
+ index(options = {}) {
32
+ if (this.readOnly) {
33
+ throw new EngineError("Cannot update a read-only workspace index", {
34
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.READ_ONLY",
35
+ context: workspaceIndexOperationDetails(this.name, "index"),
36
+ });
37
+ }
38
+ const embeddingModel = this.requireEmbeddingModel("index");
39
+ const context = {
40
+ workspaceIndex: this.info,
41
+ embeddingModel,
42
+ storage: this.storage,
43
+ embeddingConcurrency: options.embeddingConcurrency,
44
+ onProgress: options.onProgress,
45
+ signal: options.signal,
46
+ };
47
+ return options.changedPaths && options.changedPaths.length > 0
48
+ ? indexWorkspacePaths(context, options.changedPaths)
49
+ : indexWorkspace(context);
50
+ }
51
+ status() {
52
+ return getWorkspaceIndexStatus(this.info, this.storage.listFiles());
53
+ }
54
+ searchPlan(plan) {
55
+ return searchWorkspaceIndex(plan, {
56
+ workspaceIndex: this.info,
57
+ embeddingModel: this.embeddingModel,
58
+ storage: this.storage,
59
+ });
60
+ }
61
+ close() {
62
+ if (this.closed) {
63
+ return;
64
+ }
65
+ this.storage.close();
66
+ this.closed = true;
67
+ }
68
+ validateIndexVersion() {
69
+ if (this.info.indexVersion !== CURRENT_INDEX_VERSION) {
70
+ throw new EngineError("Workspace index version is not supported", {
71
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.VERSION_MISMATCH",
72
+ context: errorDetails([
73
+ workspaceIndexDetail(this.name),
74
+ detail("expected", CURRENT_INDEX_VERSION),
75
+ detail("actual", this.info.indexVersion),
76
+ detail("hint", 'Recreate the index with the current zvec-grep version; run "zg index --rebuild" for a workspace index.'),
77
+ ]),
78
+ });
79
+ }
80
+ }
81
+ validateEmbeddingSchema(current) {
82
+ this.validateIndexVersion();
83
+ const expected = this.embedding;
84
+ if (expected.provider !== current.info.provider) {
85
+ throw new EngineError("Workspace index embedding provider does not match current model", {
86
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.EMBEDDING_PROVIDER_MISMATCH",
87
+ context: workspaceIndexMismatchDetails(this.name, expected.provider, current.info.provider),
88
+ });
89
+ }
90
+ if (expected.model !== current.info.name) {
91
+ throw new EngineError("Workspace index embedding model does not match current model", {
92
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.EMBEDDING_MODEL_MISMATCH",
93
+ context: workspaceIndexMismatchDetails(this.name, expected.model, current.info.name),
94
+ });
95
+ }
96
+ if (expected.dimension !== current.info.dimension) {
97
+ throw new EngineError("Workspace index embedding dimension does not match current model", {
98
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.EMBEDDING_DIMENSION_MISMATCH",
99
+ context: workspaceIndexMismatchDetails(this.name, expected.dimension, current.info.dimension),
100
+ });
101
+ }
102
+ if (expected.metric !== current.info.metric) {
103
+ throw new EngineError("Workspace index embedding metric does not match current model", {
104
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.EMBEDDING_METRIC_MISMATCH",
105
+ context: workspaceIndexMismatchDetails(this.name, expected.metric, current.info.metric),
106
+ });
107
+ }
108
+ }
109
+ requireEmbeddingModel(operation) {
110
+ if (!this.embeddingModel) {
111
+ throw new EngineError("Workspace index operation requires an embedding model", {
112
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.EMBEDDING_MODEL_REQUIRED",
113
+ context: workspaceIndexOperationDetails(this.name, operation),
114
+ });
115
+ }
116
+ return this.embeddingModel;
117
+ }
118
+ }
119
+ function workspaceIndexOperationDetails(name, operation) {
120
+ return errorDetails([
121
+ workspaceIndexDetail(name),
122
+ detail("operation", operation),
123
+ ]);
124
+ }
125
+ function workspaceIndexMismatchDetails(name, expected, actual) {
126
+ return errorDetails([
127
+ workspaceIndexDetail(name),
128
+ detail("expected", expected),
129
+ detail("actual", actual),
130
+ ]);
131
+ }
132
+ export function isWorkspaceIndexed(info) {
133
+ return (info?.embedding !== null &&
134
+ info?.embedding !== undefined &&
135
+ info.indexVersion !== null &&
136
+ info.indexVersion !== undefined);
137
+ }
138
+ function requireWorkspaceIndexEmbedding(info, operation) {
139
+ if (isWorkspaceIndexed(info)) {
140
+ return info.embedding;
141
+ }
142
+ throw new EngineError("Workspace index has not been built", {
143
+ code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.MISSING",
144
+ context: errorDetails([
145
+ workspaceIndexDetail(info.name),
146
+ detail("operation", operation),
147
+ detail("hint", "Run zg index to build this index."),
148
+ ]),
149
+ });
150
+ }
151
+ //# sourceMappingURL=workspace-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../../../src/engine/service/workspace-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAU/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,OAAO,cAAc;IAMd;IACQ;IACA;IACA;IARF,OAAO,CAAwB;IAC/B,SAAS,CAAgC;IAClD,MAAM,GAAG,KAAK,CAAC;IAEvB,YACW,IAAwB,EAChB,cAA+B,EAC/B,WAAW,KAAK,EAChB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAHnD,SAAI,GAAJ,IAAI,CAAoB;QAChB,mBAAc,GAAd,cAAc,CAAiB;QAC/B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAA8B;QAE5D,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAyB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAwB,EAAE;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,2CAA2C,EAAE;gBACjE,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,cAAc;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,OAAO,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5D,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC;YACpD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM;QACJ,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,IAAgB;QACzB,OAAO,oBAAoB,CAAC,IAAI,EAAE;YAChC,cAAc,EAAE,IAAI,CAAC,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,qBAAqB,EAAE,CAAC;YACrD,MAAM,IAAI,WAAW,CAAC,0CAA0C,EAAE;gBAChE,IAAI,EAAE,mDAAmD;gBACzD,OAAO,EAAE,YAAY,CAAC;oBACpB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC;oBACzC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;oBACxC,MAAM,CACJ,MAAM,EACN,wGAAwG,CACzG;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,OAAuB;QACrD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,WAAW,CACnB,iEAAiE,EACjE;gBACE,IAAI,EAAE,8DAA8D;gBACpE,OAAO,EAAE,6BAA6B,CACpC,IAAI,CAAC,IAAI,EACT,QAAQ,CAAC,QAAQ,EACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CACtB;aACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,WAAW,CACnB,8DAA8D,EAC9D;gBACE,IAAI,EAAE,2DAA2D;gBACjE,OAAO,EAAE,6BAA6B,CACpC,IAAI,CAAC,IAAI,EACT,QAAQ,CAAC,KAAK,EACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAClB;aACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,WAAW,CACnB,kEAAkE,EAClE;gBACE,IAAI,EAAE,+DAA+D;gBACrE,OAAO,EAAE,6BAA6B,CACpC,IAAI,CAAC,IAAI,EACT,QAAQ,CAAC,SAAS,EAClB,OAAO,CAAC,IAAI,CAAC,SAAS,CACvB;aACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,WAAW,CACnB,+DAA+D,EAC/D;gBACE,IAAI,EAAE,4DAA4D;gBAClE,OAAO,EAAE,6BAA6B,CACpC,IAAI,CAAC,IAAI,EACT,QAAQ,CAAC,MAAM,EACf,OAAO,CAAC,IAAI,CAAC,MAAM,CACpB;aACF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,SAAiB;QAC7C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,WAAW,CACnB,uDAAuD,EACvD;gBACE,IAAI,EAAE,2DAA2D;gBACjE,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;aAC9D,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,SAAS,8BAA8B,CACrC,IAAY,EACZ,SAAiB;IAEjB,OAAO,YAAY,CAAC;QAClB,oBAAoB,CAAC,IAAI,CAAC;QAC1B,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAY,EACZ,QAAyB,EACzB,MAAuB;IAEvB,OAAO,YAAY,CAAC;QAClB,oBAAoB,CAAC,IAAI,CAAC;QAC1B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;QAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAA2C;IAK3C,OAAO,CACL,IAAI,EAAE,SAAS,KAAK,IAAI;QACxB,IAAI,EAAE,SAAS,KAAK,SAAS;QAC7B,IAAI,CAAC,YAAY,KAAK,IAAI;QAC1B,IAAI,CAAC,YAAY,KAAK,SAAS,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,IAAwB,EACxB,SAAiB;IAEjB,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,WAAW,CAAC,oCAAoC,EAAE;QAC1D,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,YAAY,CAAC;YACpB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;YAC9B,MAAM,CAAC,MAAM,EAAE,mCAAmC,CAAC;SACpD,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,13 @@
1
- import type { CreateZvecGrepOptions, ZvecGrep } from "./types.js";
1
+ import { type EmbeddingRuntimeConfig } from "../config.js";
2
+ import { type EmbeddingModel, type EmbeddingModelInfo } from "../models/index.js";
3
+ import type { CreateZvecGrepOptions, ZvecGrep, ZvecGrepContextOptions, ZvecGrepContextResult } from "./types.js";
4
+ export type EmbeddingModelIdentity = Pick<EmbeddingModelInfo, "provider" | "name">;
2
5
  export declare function createZvecGrep(options?: CreateZvecGrepOptions): Promise<ZvecGrep>;
6
+ export type WorkspaceReadSession = {
7
+ readonly root: string;
8
+ context(options: ZvecGrepContextOptions): Promise<ZvecGrepContextResult>;
9
+ close(): Promise<void>;
10
+ };
11
+ export declare function openWorkspaceReadSession(startRoot: string, embeddingModel?: EmbeddingModel): WorkspaceReadSession;
12
+ export declare function createEmbeddingModelForIdentity(identity: EmbeddingModelIdentity, options?: CreateZvecGrepOptions, workspaceRuntime?: EmbeddingRuntimeConfig): EmbeddingModel;
13
+ export declare function embeddingModelPoolKeyForIdentity(identity: EmbeddingModelIdentity, options?: CreateZvecGrepOptions, workspaceRuntime?: EmbeddingRuntimeConfig): string;