@zvec/zvec-grep 0.1.6 → 0.1.8

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 (161) hide show
  1. package/README.md +88 -52
  2. package/README_CN.md +85 -49
  3. package/dist/cli/args.js +40 -7
  4. package/dist/cli/args.js.map +1 -1
  5. package/dist/cli/auth.js +1 -4
  6. package/dist/cli/auth.js.map +1 -1
  7. package/dist/cli/commands.js +53 -24
  8. package/dist/cli/commands.js.map +1 -1
  9. package/dist/cli/format/context.d.ts +3 -0
  10. package/dist/cli/format/context.js +93 -22
  11. package/dist/cli/format/context.js.map +1 -1
  12. package/dist/cli/format/debug.js +10 -4
  13. package/dist/cli/format/debug.js.map +1 -1
  14. package/dist/cli/format/status.d.ts +3 -1
  15. package/dist/cli/format/status.js +34 -0
  16. package/dist/cli/format/status.js.map +1 -1
  17. package/dist/cli/help.js +149 -16
  18. package/dist/cli/help.js.map +1 -1
  19. package/dist/cli/index.d.ts +1 -1
  20. package/dist/cli/index.js +1 -1
  21. package/dist/cli/install.js +174 -56
  22. package/dist/cli/install.js.map +1 -1
  23. package/dist/cli/server-search.d.ts +3 -0
  24. package/dist/cli/server-search.js +12 -0
  25. package/dist/cli/server-search.js.map +1 -0
  26. package/dist/cli/types.d.ts +3 -0
  27. package/dist/cli/types.js.map +1 -1
  28. package/dist/client/daemon-client.d.ts +12 -0
  29. package/dist/client/daemon-client.js +23 -0
  30. package/dist/client/daemon-client.js.map +1 -1
  31. package/dist/daemon/backend.d.ts +2 -0
  32. package/dist/daemon/backend.js +121 -90
  33. package/dist/daemon/backend.js.map +1 -1
  34. package/dist/daemon/change-set.d.ts +5 -0
  35. package/dist/daemon/change-set.js +75 -13
  36. package/dist/daemon/change-set.js.map +1 -1
  37. package/dist/daemon/http-server.js +1 -0
  38. package/dist/daemon/http-server.js.map +1 -1
  39. package/dist/daemon/index-coordinator.d.ts +3 -4
  40. package/dist/daemon/index-coordinator.js +8 -21
  41. package/dist/daemon/index-coordinator.js.map +1 -1
  42. package/dist/daemon/root-runtime.js +2 -2
  43. package/dist/daemon/root-runtime.js.map +1 -1
  44. package/dist/daemon/runtime-manager.d.ts +1 -0
  45. package/dist/daemon/runtime-manager.js +4 -1
  46. package/dist/daemon/runtime-manager.js.map +1 -1
  47. package/dist/daemon/server-controller.js +138 -14
  48. package/dist/daemon/server-controller.js.map +1 -1
  49. package/dist/daemon/watch-manager.d.ts +5 -0
  50. package/dist/daemon/watch-manager.js +68 -21
  51. package/dist/daemon/watch-manager.js.map +1 -1
  52. package/dist/engine/code-formats.d.ts +3 -0
  53. package/dist/engine/code-formats.js +14 -0
  54. package/dist/engine/code-formats.js.map +1 -0
  55. package/dist/engine/extraction/code/adapter.js +1 -1
  56. package/dist/engine/extraction/code/adapter.js.map +1 -1
  57. package/dist/engine/extraction/code/extractor.d.ts +5 -0
  58. package/dist/engine/extraction/code/extractor.js +53 -26
  59. package/dist/engine/extraction/code/extractor.js.map +1 -1
  60. package/dist/engine/extraction/index.d.ts +2 -1
  61. package/dist/engine/extraction/index.js +2 -1
  62. package/dist/engine/extraction/index.js.map +1 -1
  63. package/dist/engine/extraction/markdown/extractor.js +5 -3
  64. package/dist/engine/extraction/markdown/extractor.js.map +1 -1
  65. package/dist/engine/extraction/runtime.d.ts +6 -1
  66. package/dist/engine/extraction/runtime.js +11 -0
  67. package/dist/engine/extraction/runtime.js.map +1 -1
  68. package/dist/engine/extraction/vector-content.d.ts +5 -0
  69. package/dist/engine/extraction/vector-content.js +83 -0
  70. package/dist/engine/extraction/vector-content.js.map +1 -0
  71. package/dist/engine/file-size-policy.d.ts +6 -0
  72. package/dist/engine/file-size-policy.js +20 -0
  73. package/dist/engine/file-size-policy.js.map +1 -0
  74. package/dist/engine/file-type.d.ts +10 -0
  75. package/dist/engine/file-type.js +71 -38
  76. package/dist/engine/file-type.js.map +1 -1
  77. package/dist/engine/manifest.d.ts +1 -0
  78. package/dist/engine/manifest.js +4 -0
  79. package/dist/engine/manifest.js.map +1 -1
  80. package/dist/engine/models/backends/model2vec-runtime.d.ts +63 -0
  81. package/dist/engine/models/backends/model2vec-runtime.js +112 -0
  82. package/dist/engine/models/backends/model2vec-runtime.js.map +1 -0
  83. package/dist/engine/models/backends/model2vec-tokenizer.d.ts +2 -0
  84. package/dist/engine/models/backends/model2vec-tokenizer.js +42 -0
  85. package/dist/engine/models/backends/model2vec-tokenizer.js.map +1 -0
  86. package/dist/engine/models/backends/model2vec-worker-pool.d.ts +25 -0
  87. package/dist/engine/models/backends/model2vec-worker-pool.js +264 -0
  88. package/dist/engine/models/backends/model2vec-worker-pool.js.map +1 -0
  89. package/dist/engine/models/backends/model2vec-worker.d.ts +1 -0
  90. package/dist/engine/models/backends/model2vec-worker.js +41 -0
  91. package/dist/engine/models/backends/model2vec-worker.js.map +1 -0
  92. package/dist/engine/models/backends/model2vec.d.ts +3 -20
  93. package/dist/engine/models/backends/model2vec.js +107 -128
  94. package/dist/engine/models/backends/model2vec.js.map +1 -1
  95. package/dist/engine/models/catalog.d.ts +26 -7
  96. package/dist/engine/models/catalog.js +26 -7
  97. package/dist/engine/models/catalog.js.map +1 -1
  98. package/dist/engine/models/embeddings.d.ts +1 -0
  99. package/dist/engine/models/embeddings.js.map +1 -1
  100. package/dist/engine/models/resolution.js +1 -1
  101. package/dist/engine/models/resolution.js.map +1 -1
  102. package/dist/engine/pipeline/indexing/index.js +102 -78
  103. package/dist/engine/pipeline/indexing/index.js.map +1 -1
  104. package/dist/engine/pipeline/indexing/input-budget.d.ts +2 -0
  105. package/dist/engine/pipeline/indexing/input-budget.js +51 -0
  106. package/dist/engine/pipeline/indexing/input-budget.js.map +1 -0
  107. package/dist/engine/pipeline/indexing/scanner/index.d.ts +5 -1
  108. package/dist/engine/pipeline/indexing/scanner/index.js +129 -20
  109. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -1
  110. package/dist/engine/pipeline/search/index.js.map +1 -1
  111. package/dist/engine/service/index.d.ts +1 -1
  112. package/dist/engine/service/root.d.ts +1 -4
  113. package/dist/engine/service/root.js +15 -22
  114. package/dist/engine/service/root.js.map +1 -1
  115. package/dist/engine/service/structure-enrichment.d.ts +1 -1
  116. package/dist/engine/service/structure-enrichment.js +10 -10
  117. package/dist/engine/service/structure-enrichment.js.map +1 -1
  118. package/dist/engine/service/types.d.ts +8 -1
  119. package/dist/engine/service/workspace-index.d.ts +6 -4
  120. package/dist/engine/service/workspace-index.js +18 -12
  121. package/dist/engine/service/workspace-index.js.map +1 -1
  122. package/dist/engine/service/zvec-grep.js +47 -29
  123. package/dist/engine/service/zvec-grep.js.map +1 -1
  124. package/dist/engine/storage/index.d.ts +28 -21
  125. package/dist/engine/storage/index.js +2 -1
  126. package/dist/engine/storage/index.js.map +1 -1
  127. package/dist/engine/storage/layout.d.ts +10 -0
  128. package/dist/engine/storage/layout.js +29 -0
  129. package/dist/engine/storage/layout.js.map +1 -0
  130. package/dist/engine/storage/zvec.d.ts +2 -42
  131. package/dist/engine/storage/zvec.js +62 -71
  132. package/dist/engine/storage/zvec.js.map +1 -1
  133. package/dist/engine/types.d.ts +14 -0
  134. package/dist/engine/types.js.map +1 -1
  135. package/dist/index.d.ts +2 -2
  136. package/dist/index.js.map +1 -1
  137. package/dist/mcp/input-normalization.d.ts +2 -2
  138. package/dist/mcp/input-normalization.js +14 -5
  139. package/dist/mcp/input-normalization.js.map +1 -1
  140. package/dist/mcp/schemas.d.ts +242 -0
  141. package/dist/mcp/schemas.js +73 -14
  142. package/dist/mcp/schemas.js.map +1 -1
  143. package/dist/mcp/stdio-bridge.d.ts +11 -0
  144. package/dist/mcp/stdio-bridge.js +134 -0
  145. package/dist/mcp/stdio-bridge.js.map +1 -0
  146. package/dist/mcp/tools.d.ts +4 -1
  147. package/dist/mcp/tools.js +78 -44
  148. package/dist/mcp/tools.js.map +1 -1
  149. package/dist/prompts/zvec-grep-guidance.d.ts +2 -0
  150. package/dist/prompts/zvec-grep-guidance.js +9 -0
  151. package/dist/prompts/zvec-grep-guidance.js.map +1 -0
  152. package/docs/01-agents.md +26 -5
  153. package/docs/02-cli.md +11 -1
  154. package/docs/03-mcp.md +29 -11
  155. package/docs/04-pipeline.md +10 -2
  156. package/docs/06-server.md +9 -0
  157. package/docs/07-embedding.md +6 -3
  158. package/package.json +5 -4
  159. package/skills/zvec-grep/SKILL.md +0 -61
  160. package/skills/zvec-grep/agents/openai.yaml +0 -4
  161. package/skills/zvec-grep/references/cli-fallback.md +0 -85
@@ -2,18 +2,18 @@ import { readFile, stat } from "node:fs/promises";
2
2
  import { relative } from "node:path";
3
3
  import { extract } from "../extraction/index.js";
4
4
  import { detectFileType } from "../file-type.js";
5
+ import { resolveMaxFileSizeBytes } from "../file-size-policy.js";
5
6
  import { normalizePath, toDisplayPath } from "../utils/path.js";
6
7
  import { sha256Text } from "../utils/hash.js";
7
8
  export const RG_STRUCTURE_ENRICH_FILE_LIMIT = 100;
8
9
  const STRUCTURE_ENRICH_FILE_ID_NAMESPACE = "__rg_structure__";
9
- const STRUCTURE_ENRICH_MAX_FILE_SIZE_BYTES = 1 * 1024 * 1024;
10
- export async function enrichLexicalItemsWithStructure(root, items, fileLimit = RG_STRUCTURE_ENRICH_FILE_LIMIT) {
10
+ export async function enrichLexicalItemsWithStructure(root, items, fileLimit = RG_STRUCTURE_ENRICH_FILE_LIMIT, maxFileSizeBytes) {
11
11
  const matchedFiles = uniqueLexicalFilePaths(items);
12
12
  const selectedFiles = new Set(matchedFiles.slice(0, fileLimit));
13
13
  const fragmentsByFile = new Map();
14
14
  let parsedFiles = 0;
15
15
  for (const absolutePath of selectedFiles) {
16
- const fragments = await parseStructuralFragments(root, absolutePath);
16
+ const fragments = await parseStructuralFragments(root, absolutePath, maxFileSizeBytes);
17
17
  fragmentsByFile.set(absolutePath, fragments);
18
18
  if (fragments !== null) {
19
19
  parsedFiles++;
@@ -79,9 +79,9 @@ function uniqueLexicalFilePaths(items) {
79
79
  }
80
80
  return paths;
81
81
  }
82
- async function parseStructuralFragments(root, absolutePath) {
82
+ async function parseStructuralFragments(root, absolutePath, maxFileSizeBytes) {
83
83
  try {
84
- const file = await fileInfoForStructure(root, absolutePath);
84
+ const file = await fileInfoForStructure(root, absolutePath, maxFileSizeBytes);
85
85
  if (!file) {
86
86
  return null;
87
87
  }
@@ -102,18 +102,18 @@ async function parseStructuralFragments(root, absolutePath) {
102
102
  function isStructuralFragment(fragment) {
103
103
  return (fragment.metadata?.kind === "code" || fragment.metadata?.kind === "markdown");
104
104
  }
105
- async function fileInfoForStructure(root, absolutePath) {
105
+ async function fileInfoForStructure(root, absolutePath, maxFileSizeBytes) {
106
106
  const info = await stat(absolutePath).catch(() => null);
107
- if (!info ||
108
- !info.isFile() ||
109
- info.size <= 0 ||
110
- info.size > STRUCTURE_ENRICH_MAX_FILE_SIZE_BYTES) {
107
+ if (!info || !info.isFile() || info.size <= 0) {
111
108
  return null;
112
109
  }
113
110
  const detected = detectFileType(absolutePath);
114
111
  if (!detected || !isStructurallyEnrichableFile(detected)) {
115
112
  return null;
116
113
  }
114
+ if (info.size > resolveMaxFileSizeBytes(detected.kind, maxFileSizeBytes)) {
115
+ return null;
116
+ }
117
117
  return {
118
118
  id: makeStructureFileId(absolutePath),
119
119
  absolutePath: normalizePath(absolutePath),
@@ -1 +1 @@
1
- {"version":3,"file":"structure-enrichment.js","sourceRoot":"","sources":["../../../src/engine/service/structure-enrichment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure-enrichment.js","sourceRoot":"","sources":["../../../src/engine/service/structure-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAOjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAOlD,MAAM,kCAAkC,GAAG,kBAAkB,CAAC;AAC9D,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAAY,EACZ,KAAqC,EACrC,SAAS,GAAG,8BAA8B,EAC1C,gBAAyB;IAEzB,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;IACnE,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC9C,IAAI,EACJ,YAAY,EACZ,gBAAgB,CACjB,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1C,MAAM,gBAAgB,GAA6B;YACjD,QAAQ,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE;YACzC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC;QAEF,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAC7C,SAAS,EAAE,gBAAgB;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE;YACX,MAAM,EAAE,uBAAuB;YAC/B,SAAS;YACT,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,WAAW;YACX,aAAa,EAAE,aAAa,CAAC,IAAI;YACjC,aAAa;YACb,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;YAC5D,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,SAAS;SAC3C;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAqC;IAErC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,IAAY,EACZ,YAAoB,EACpB,gBAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CACrC,IAAI,EACJ,YAAY,EACZ,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,IAAI;SACI,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnE,OAAO,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAwB;IACpD,OAAO,CACL,QAAQ,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU,CAC7E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,YAAoB,EACpB,gBAAyB;IAEzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,EAAE,EAAE,mBAAmB,CAAC,YAAY,CAAC;QACrC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;QACzC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC;QAChE,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,gBAAgB,EAAE,IAAI,CAAC,OAAO;QAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,IAAuC;IAEvC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC;IAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,0BAA0B,CACjC,SAAoC,EACpC,UAA4C;IAE5C,IAAI,IAAI,GAA0B,IAAI,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAY,EACZ,KAAuC;IAEvC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,MAAM;QACrB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;QAClC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAoB,EACpB,KAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;IAC/B,MAAM,SAAS,GACb,SAAS,CAAC,IAAI,KAAK,MAAM;QACvB,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS;QACzC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC9B,MAAM,UAAU,GACd,UAAU,CAAC,IAAI,KAAK,MAAM;QACxB,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS;QAC3C,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAE9B,OAAO,CACL,SAAS,GAAG,UAAU;QACtB,wBAAwB,CAAC,KAAK,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAwB;IACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,OAAO,UAAU,CACf,GAAG,kCAAkC,KAAK,aAAa,CAAC,YAAY,CAAC,EAAE,CACxE,CAAC;AACJ,CAAC"}
@@ -11,7 +11,6 @@ export type CreateZvecGrepOptions = {
11
11
  endpoint?: string;
12
12
  modelCacheDir?: string;
13
13
  device?: "auto" | "cpu" | "metal" | "vulkan" | "cuda";
14
- defaultEmbedding?: boolean;
15
14
  authorizationSigningKeyPath?: string;
16
15
  };
17
16
  export type ZvecGrepIndexOptions = {
@@ -137,6 +136,12 @@ export type ZvecGrepContextItem = {
137
136
  selectionReason?: ZvecGrepContextSelectionReason;
138
137
  coverageGroup?: string;
139
138
  };
139
+ export type ZvecGrepContextGroupResult = {
140
+ id: string;
141
+ query: string;
142
+ role: "primary" | "supplemental";
143
+ items: ZvecGrepContextItem[];
144
+ };
140
145
  export type ZvecGrepContextWorkspaceIndex = {
141
146
  id: string;
142
147
  name: string;
@@ -189,6 +194,8 @@ export type ZvecGrepContextResult = {
189
194
  coverage: ZvecGrepContextCoverage;
190
195
  workspaceIndex?: ZvecGrepContextWorkspaceIndex;
191
196
  items: ZvecGrepContextItem[];
197
+ /** Per-query-group recall lists before cross-group deduplication and reranking. */
198
+ groupResults?: ZvecGrepContextGroupResult[];
192
199
  diagnostics: ZvecGrepContextDiagnostics;
193
200
  };
194
201
  export type ZvecGrep = {
@@ -1,14 +1,16 @@
1
1
  import type { EmbeddingModel } from "../models/index.js";
2
2
  import type { WorkspaceIndexEmbeddingSchema, WorkspaceIndexStatus, WorkspaceIndexInfo, IndexOptions, IndexResult, SearchPlan, SearchPlanResult } from "../types.js";
3
+ export type WorkspaceIndexOptions = {
4
+ mode: "read" | "write";
5
+ embeddingModel?: EmbeddingModel;
6
+ };
3
7
  export declare class WorkspaceIndex {
4
8
  readonly info: WorkspaceIndexInfo;
5
- private readonly embeddingModel?;
6
- private readonly readOnly;
7
- private readonly fileStorePath;
8
9
  private readonly storage;
9
10
  private readonly embedding;
11
+ private readonly embeddingModel?;
10
12
  private closed;
11
- constructor(info: WorkspaceIndexInfo, embeddingModel?: EmbeddingModel | undefined, readOnly?: boolean, fileStorePath?: string);
13
+ constructor(info: WorkspaceIndexInfo, options: WorkspaceIndexOptions);
12
14
  get name(): string;
13
15
  index(options?: IndexOptions): Promise<IndexResult>;
14
16
  status(): Promise<WorkspaceIndexStatus>;
@@ -1,35 +1,41 @@
1
- import { join } from "node:path";
2
1
  import { workspaceIndexDetail, detail, EngineError, errorDetails, } from "../errors.js";
3
2
  import { getWorkspaceIndexStatus, indexWorkspace, indexWorkspacePaths, } from "../pipeline/indexing/index.js";
4
3
  import { searchWorkspaceIndex } from "../pipeline/search/index.js";
5
- import { ZvecWorkspaceIndexStorage } from "../storage/zvec.js";
4
+ import { createWorkspaceIndexStorage, } from "../storage/index.js";
6
5
  import { CURRENT_INDEX_VERSION } from "../types.js";
7
- const FILES_ZVEC = "files.zvec";
8
6
  export class WorkspaceIndex {
9
7
  info;
10
- embeddingModel;
11
- readOnly;
12
- fileStorePath;
13
8
  storage;
14
9
  embedding;
10
+ embeddingModel;
15
11
  closed = false;
16
- constructor(info, embeddingModel, readOnly = false, fileStorePath = join(info.path, FILES_ZVEC)) {
12
+ constructor(info, options) {
17
13
  this.info = info;
18
- this.embeddingModel = embeddingModel;
19
- this.readOnly = readOnly;
20
- this.fileStorePath = fileStorePath;
14
+ this.embeddingModel = options.embeddingModel;
21
15
  this.embedding = requireWorkspaceIndexEmbedding(info, "open");
22
16
  this.validateIndexVersion();
23
17
  if (this.embeddingModel) {
24
18
  this.validateEmbeddingSchema(this.embeddingModel);
25
19
  }
26
- this.storage = new ZvecWorkspaceIndexStorage(info.path, this.embedding, this.fileStorePath, readOnly);
20
+ if (options.mode === "write") {
21
+ this.storage = createWorkspaceIndexStorage({
22
+ storagePath: info.path,
23
+ readOnly: false,
24
+ embedding: this.embedding,
25
+ });
26
+ }
27
+ else {
28
+ this.storage = createWorkspaceIndexStorage({
29
+ storagePath: info.path,
30
+ readOnly: true,
31
+ });
32
+ }
27
33
  }
28
34
  get name() {
29
35
  return this.info.name;
30
36
  }
31
37
  index(options = {}) {
32
- if (this.readOnly) {
38
+ if (this.storage.readOnly) {
33
39
  throw new EngineError("Cannot update a read-only workspace index", {
34
40
  code: "ZVEC_GREP.ENGINE.WORKSPACE_INDEX.READ_ONLY",
35
41
  context: workspaceIndexOperationDetails(this.name, "index"),
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../../../src/engine/service/workspace-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../../../src/engine/service/workspace-index.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { CURRENT_INDEX_VERSION } from "../types.js";
9
9
  import { indexStatusNeedsRefresh } from "../index-status.js";
10
10
  import { workspaceIndexInfoFromManifest, CURRENT_MANIFEST_VERSION, readWorkspaceManifest, writeWorkspaceManifest, } from "../manifest.js";
11
11
  import { validateRootPaths } from "../pipeline/indexing/root-paths.js";
12
- import { findNearestWorkspace, hasWorkspaceIndex, resetWorkspaceIndexStorage, resolveZvecGrepRoot, workspaceHome, workspaceIndexLocation, } from "./root.js";
12
+ import { findNearestWorkspace, hasWorkspaceIndex, resetWorkspaceIndex, resolveZvecGrepRoot, workspaceHome, workspaceIndexLocation, } from "./root.js";
13
13
  import { runRgSearch } from "./lexical.js";
14
14
  import { defaultHome, normalizePath } from "../utils/path.js";
15
15
  import { acquireReadWriteLock, assertNoWriteLock, } from "../utils/lock.js";
@@ -20,7 +20,7 @@ import { remoteEmbeddingAuthorizationGuard } from "../../authorization/operation
20
20
  import { RemoteEmbeddingAuthorizationStore } from "../../authorization/store.js";
21
21
  const DEFAULT_CONTEXT_LIMIT = 10;
22
22
  const DEFAULT_CONTEXT_TOTAL_LIMIT = 30;
23
- const DEFAULT_LOCAL_EMBEDDING = "local/embeddinggemma-300m";
23
+ const DEFAULT_LOCAL_EMBEDDING = "local/potion-code-16m-v2";
24
24
  const PROVIDER_API_KEY_IDENTITY_SECRET = randomBytes(32);
25
25
  const MAX_RECOVERED_EMBEDDING_MODELS = 4;
26
26
  export async function createZvecGrep(options = {}) {
@@ -40,7 +40,10 @@ export function openWorkspaceReadSession(startRoot, embeddingModel) {
40
40
  if (!isWorkspaceIndexed(info) || !hasWorkspaceIndex(location)) {
41
41
  throw workspaceIndexMissingError(location.root, info.indexPolicy ?? "enabled");
42
42
  }
43
- const workspaceIndex = new WorkspaceIndex(info, embeddingModel, true, location.filesPath);
43
+ const workspaceIndex = new WorkspaceIndex(info, {
44
+ mode: "read",
45
+ embeddingModel,
46
+ });
44
47
  let closed = false;
45
48
  return {
46
49
  root: location.root,
@@ -122,14 +125,18 @@ class ZvecGrepService {
122
125
  follow: options.follow,
123
126
  });
124
127
  if (options.rebuild || !isWorkspaceIndexed(existing)) {
125
- resetWorkspaceIndexStorage(location);
128
+ resetWorkspaceIndex(location);
126
129
  }
127
130
  const existingAfterRebuild = options.rebuild ? null : existing;
128
131
  if (isWorkspaceIndexed(existingAfterRebuild)) {
129
132
  assertWorkspaceEmbeddingMatchesCurrentModel(existingAfterRebuild, embeddingModel, "zg index --rebuild");
130
133
  }
131
- const manifest = prepareWorkspaceManifest(location, existingAfterRebuild, rootPaths, embeddingModel, existingRuntime);
132
- const workspaceIndex = new WorkspaceIndex(manifest, embeddingModel, false, location.filesPath);
134
+ const embeddingRuntime = embeddingRuntimeAfterIndex(existing, existingRuntime, embeddingModel, effectiveRuntime, this.options);
135
+ const manifest = prepareWorkspaceManifest(location, existingAfterRebuild, rootPaths, embeddingModel, embeddingRuntime);
136
+ const workspaceIndex = new WorkspaceIndex(manifest, {
137
+ mode: "write",
138
+ embeddingModel,
139
+ });
133
140
  writeWorkspaceManifest(location.home, manifest);
134
141
  try {
135
142
  const releaseWriterContext = options.onWriterContext?.((contextOptions) => this.contextFromWriterWorkspaceIndex(root, workspaceIndex, contextOptions));
@@ -143,7 +150,7 @@ class ZvecGrepService {
143
150
  });
144
151
  writeWorkspaceManifest(location.home, {
145
152
  ...manifest,
146
- embeddingRuntime: embeddingRuntimeAfterSuccessfulIndex(existing, existingRuntime, embeddingModel, effectiveRuntime, this.options),
153
+ embeddingRuntime,
147
154
  updatedTime: Date.now(),
148
155
  });
149
156
  return result;
@@ -151,7 +158,7 @@ class ZvecGrepService {
151
158
  catch (error) {
152
159
  writeWorkspaceManifest(location.home, {
153
160
  ...manifest,
154
- embeddingRuntime: existingRuntime,
161
+ embeddingRuntime,
155
162
  updatedTime: Date.now(),
156
163
  });
157
164
  throw error;
@@ -179,7 +186,7 @@ class ZvecGrepService {
179
186
  return false;
180
187
  }
181
188
  return await withHomeWriteLock(location.home, "index.drop", async () => {
182
- resetWorkspaceIndexStorage(location);
189
+ resetWorkspaceIndex(location);
183
190
  return true;
184
191
  });
185
192
  }
@@ -310,7 +317,7 @@ class ZvecGrepService {
310
317
  code: "ZVEC_GREP.ENGINE.MANIFEST.NOT_FOUND",
311
318
  });
312
319
  }
313
- const workspaceIndex = this.openWorkspaceIndexForSearch(info, request, location, info.embeddingRuntime);
320
+ const workspaceIndex = this.openWorkspaceIndexForSearch(info, request, info.embeddingRuntime);
314
321
  try {
315
322
  return await contextFromOpenWorkspaceIndex({
316
323
  root: location.root,
@@ -350,7 +357,10 @@ class ZvecGrepService {
350
357
  const embeddingModel = this.embeddingModelForIndex(existing, "context.refresh", workspaceRuntime);
351
358
  assertWorkspaceEndpointMatchesCurrentRuntime(existing, workspaceRuntime, effectiveEmbeddingRuntime(this.options, embeddingModel, workspaceRuntime), "zg index --endpoint <url> --rebuild");
352
359
  assertWorkspaceEmbeddingMatchesCurrentModel(existing, embeddingModel, "zg index --rebuild");
353
- const workspaceIndex = new WorkspaceIndex(existing, embeddingModel, false, location.filesPath);
360
+ const workspaceIndex = new WorkspaceIndex(existing, {
361
+ mode: "write",
362
+ embeddingModel,
363
+ });
354
364
  try {
355
365
  const result = await workspaceIndex.index({
356
366
  embeddingConcurrency: options.embeddingConcurrency,
@@ -413,7 +423,7 @@ class ZvecGrepService {
413
423
  cause,
414
424
  });
415
425
  }
416
- const structuralEnrichment = await timings.time("structure_enrichment", () => enrichLexicalItemsWithStructure(root, rgResult.items));
426
+ const structuralEnrichment = await timings.time("structure_enrichment", () => enrichLexicalItemsWithStructure(root, rgResult.items, undefined, options.maxFileSizeBytes));
417
427
  const items = dedupeAndRerankContextItems(structuralEnrichment.items);
418
428
  const emptyReason = items.length === 0 ? rgEmptyReason(rgResult.diagnostics) : undefined;
419
429
  return {
@@ -431,8 +441,11 @@ class ZvecGrepService {
431
441
  },
432
442
  };
433
443
  }
434
- openWorkspaceIndexForSearch(info, request, location, workspaceRuntime) {
435
- return new WorkspaceIndex(info, this.embeddingModelForSearch(indexedEmbeddingSchema(info), request, workspaceRuntime, info), true, location.filesPath);
444
+ openWorkspaceIndexForSearch(info, request, workspaceRuntime) {
445
+ return new WorkspaceIndex(info, {
446
+ mode: "read",
447
+ embeddingModel: this.embeddingModelForSearch(indexedEmbeddingSchema(info), request, workspaceRuntime, info),
448
+ });
436
449
  }
437
450
  embeddingModelForSearch(schema, request, workspaceRuntime, info) {
438
451
  if (!request.routes.some((route) => route.mode === "vector")) {
@@ -459,9 +472,7 @@ class ZvecGrepService {
459
472
  const reference = resolveEmbeddingReference({
460
473
  explicit: this.options.embedding,
461
474
  globalDefault: config.defaults?.embedding,
462
- fallback: this.options.defaultEmbedding === true
463
- ? DEFAULT_LOCAL_EMBEDDING
464
- : undefined,
475
+ fallback: DEFAULT_LOCAL_EMBEDDING,
465
476
  });
466
477
  const referenceIdentity = reference
467
478
  ? parseEmbeddingModelReference(reference)
@@ -545,7 +556,7 @@ class ZvecGrepService {
545
556
  context: errorDetails([
546
557
  detail("operation", operation),
547
558
  detail("hint", `Pass "--embedding <model>", set ZVEC_GREP_EMBEDDING, or configure defaults.embedding in ${globalConfigPath()}. Existing indexes can run "zg index" without --embedding to reuse the stored schema.`),
548
- detail("examples", "local/embeddinggemma-300m, qwen/text-embedding-v4"),
559
+ detail("examples", "local/potion-code-16m-v2, qwen/text-embedding-v4"),
549
560
  ]),
550
561
  });
551
562
  }
@@ -593,7 +604,8 @@ async function contextFromOpenWorkspaceIndex(input) {
593
604
  input.timings.addEntries(search.timings);
594
605
  searches.push(search);
595
606
  }
596
- const items = selectAndRankContextItems(searches.flatMap((search, index) => searchPlanToContextItems(search, input.root, groups[index])), groups.filter((group) => group.role === "primary").map((group) => group.id));
607
+ const groupItems = searches.map((search, index) => searchPlanToContextItems(search, input.root, groups[index]));
608
+ const items = selectAndRankContextItems(groupItems.flat(), groups.filter((group) => group.role === "primary").map((group) => group.id));
597
609
  return {
598
610
  query: input.request.displayQuery,
599
611
  root: input.root,
@@ -605,6 +617,12 @@ async function contextFromOpenWorkspaceIndex(input) {
605
617
  path: input.workspaceIndex.info.path,
606
618
  },
607
619
  items,
620
+ groupResults: groups.map((group, index) => ({
621
+ id: group.id,
622
+ query: group.query,
623
+ role: group.role,
624
+ items: groupItems[index] ?? [],
625
+ })),
608
626
  diagnostics: {
609
627
  emptyReason: items.length === 0 ? "no_matches" : undefined,
610
628
  index: {
@@ -850,7 +868,7 @@ async function workspaceIndexStatus(info, location) {
850
868
  !hasWorkspaceIndex(location)) {
851
869
  return null;
852
870
  }
853
- const workspaceIndex = new WorkspaceIndex(info, undefined, true, location.filesPath);
871
+ const workspaceIndex = new WorkspaceIndex(info, { mode: "read" });
854
872
  try {
855
873
  return await workspaceIndex.status();
856
874
  }
@@ -962,7 +980,7 @@ function runtimeForModelProvider(existing, model, workspaceRuntime) {
962
980
  ? {}
963
981
  : workspaceRuntime;
964
982
  }
965
- function embeddingRuntimeAfterSuccessfulIndex(existing, existingRuntime, model, effectiveRuntime, explicit) {
983
+ function embeddingRuntimeAfterIndex(existing, existingRuntime, model, effectiveRuntime, explicit) {
966
984
  const sameProvider = isWorkspaceIndexed(existing) &&
967
985
  existing.embedding.provider === model.info.provider;
968
986
  const apiKey = model.info.provider === "local"
@@ -1152,7 +1170,7 @@ function searchPlanToContextItems(result, root, group) {
1152
1170
  };
1153
1171
  });
1154
1172
  }
1155
- const DEFAULT_CONTEXT_DETAIL_LIMIT = 6;
1173
+ const DEFAULT_CONTEXT_PRIORITY_LIMIT = 6;
1156
1174
  const CONTEXT_GROUP_RRF_K = 60;
1157
1175
  function selectAndRankContextItems(items, coverageGroupIds) {
1158
1176
  const deduped = new Map();
@@ -1169,9 +1187,9 @@ function selectAndRankContextItems(items, coverageGroupIds) {
1169
1187
  const candidates = [...deduped.values()];
1170
1188
  const globallyRanked = [...candidates].sort(compareContextGlobalRank);
1171
1189
  const selected = new Set();
1172
- const detailed = [];
1190
+ const prioritized = [];
1173
1191
  for (const groupId of coverageGroupIds) {
1174
- if (detailed.length >= DEFAULT_CONTEXT_DETAIL_LIMIT) {
1192
+ if (prioritized.length >= DEFAULT_CONTEXT_PRIORITY_LIMIT) {
1175
1193
  break;
1176
1194
  }
1177
1195
  const candidate = candidates
@@ -1182,14 +1200,14 @@ function selectAndRankContextItems(items, coverageGroupIds) {
1182
1200
  continue;
1183
1201
  }
1184
1202
  selected.add(contextItemDedupeKey(candidate));
1185
- detailed.push({
1203
+ prioritized.push({
1186
1204
  ...candidate,
1187
1205
  selectionReason: "coverage",
1188
1206
  coverageGroup: groupId,
1189
1207
  });
1190
1208
  }
1191
1209
  for (const candidate of globallyRanked) {
1192
- if (detailed.length >= DEFAULT_CONTEXT_DETAIL_LIMIT) {
1210
+ if (prioritized.length >= DEFAULT_CONTEXT_PRIORITY_LIMIT) {
1193
1211
  break;
1194
1212
  }
1195
1213
  const key = contextItemDedupeKey(candidate);
@@ -1197,14 +1215,14 @@ function selectAndRankContextItems(items, coverageGroupIds) {
1197
1215
  continue;
1198
1216
  }
1199
1217
  selected.add(key);
1200
- detailed.push({
1218
+ prioritized.push({
1201
1219
  ...candidate,
1202
1220
  selectionReason: "global_fill",
1203
1221
  coverageGroup: undefined,
1204
1222
  });
1205
1223
  }
1206
- const additional = globallyRanked.filter((item) => !selected.has(contextItemDedupeKey(item)));
1207
- return [...detailed, ...additional].map((item, index) => ({
1224
+ const unprioritized = globallyRanked.filter((item) => !selected.has(contextItemDedupeKey(item)));
1225
+ return [...prioritized, ...unprioritized].map((item, index) => ({
1208
1226
  ...item,
1209
1227
  rank: index + 1,
1210
1228
  }));