@zvec/zvec-grep 0.1.0

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 (201) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +222 -0
  3. package/README_CN.md +222 -0
  4. package/dist/cli/args.d.ts +2 -0
  5. package/dist/cli/args.js +611 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/commands.d.ts +2 -0
  8. package/dist/cli/commands.js +270 -0
  9. package/dist/cli/commands.js.map +1 -0
  10. package/dist/cli/errors.d.ts +6 -0
  11. package/dist/cli/errors.js +97 -0
  12. package/dist/cli/errors.js.map +1 -0
  13. package/dist/cli/format/context.d.ts +5 -0
  14. package/dist/cli/format/context.js +490 -0
  15. package/dist/cli/format/context.js.map +1 -0
  16. package/dist/cli/format/debug.d.ts +4 -0
  17. package/dist/cli/format/debug.js +42 -0
  18. package/dist/cli/format/debug.js.map +1 -0
  19. package/dist/cli/format/highlight.d.ts +3 -0
  20. package/dist/cli/format/highlight.js +106 -0
  21. package/dist/cli/format/highlight.js.map +1 -0
  22. package/dist/cli/format/progress.d.ts +9 -0
  23. package/dist/cli/format/progress.js +92 -0
  24. package/dist/cli/format/progress.js.map +1 -0
  25. package/dist/cli/format/range.d.ts +3 -0
  26. package/dist/cli/format/range.js +24 -0
  27. package/dist/cli/format/range.js.map +1 -0
  28. package/dist/cli/format/status.d.ts +7 -0
  29. package/dist/cli/format/status.js +200 -0
  30. package/dist/cli/format/status.js.map +1 -0
  31. package/dist/cli/help.d.ts +1 -0
  32. package/dist/cli/help.js +88 -0
  33. package/dist/cli/help.js.map +1 -0
  34. package/dist/cli/index.d.ts +2 -0
  35. package/dist/cli/index.js +32 -0
  36. package/dist/cli/index.js.map +1 -0
  37. package/dist/cli/types.d.ts +56 -0
  38. package/dist/cli/types.js +10 -0
  39. package/dist/cli/types.js.map +1 -0
  40. package/dist/cli/version.d.ts +1 -0
  41. package/dist/cli/version.js +11 -0
  42. package/dist/cli/version.js.map +1 -0
  43. package/dist/engine/collection/index.d.ts +50 -0
  44. package/dist/engine/collection/index.js +388 -0
  45. package/dist/engine/collection/index.js.map +1 -0
  46. package/dist/engine/errors/details.d.ts +6 -0
  47. package/dist/engine/errors/details.js +27 -0
  48. package/dist/engine/errors/details.js.map +1 -0
  49. package/dist/engine/errors/index.d.ts +14 -0
  50. package/dist/engine/errors/index.js +16 -0
  51. package/dist/engine/errors/index.js.map +1 -0
  52. package/dist/engine/models/catalog.d.ts +47 -0
  53. package/dist/engine/models/catalog.js +68 -0
  54. package/dist/engine/models/catalog.js.map +1 -0
  55. package/dist/engine/models/embeddings.d.ts +25 -0
  56. package/dist/engine/models/embeddings.js +100 -0
  57. package/dist/engine/models/embeddings.js.map +1 -0
  58. package/dist/engine/models/factory.d.ts +5 -0
  59. package/dist/engine/models/factory.js +66 -0
  60. package/dist/engine/models/factory.js.map +1 -0
  61. package/dist/engine/models/index.d.ts +6 -0
  62. package/dist/engine/models/index.js +5 -0
  63. package/dist/engine/models/index.js.map +1 -0
  64. package/dist/engine/models/providers/index.d.ts +2 -0
  65. package/dist/engine/models/providers/index.js +3 -0
  66. package/dist/engine/models/providers/index.js.map +1 -0
  67. package/dist/engine/models/providers/llama-cpp/embedding.d.ts +94 -0
  68. package/dist/engine/models/providers/llama-cpp/embedding.js +459 -0
  69. package/dist/engine/models/providers/llama-cpp/embedding.js.map +1 -0
  70. package/dist/engine/models/providers/llama-cpp/index.d.ts +1 -0
  71. package/dist/engine/models/providers/llama-cpp/index.js +2 -0
  72. package/dist/engine/models/providers/llama-cpp/index.js.map +1 -0
  73. package/dist/engine/models/providers/qwen/embedding.d.ts +38 -0
  74. package/dist/engine/models/providers/qwen/embedding.js +322 -0
  75. package/dist/engine/models/providers/qwen/embedding.js.map +1 -0
  76. package/dist/engine/models/providers/qwen/index.d.ts +1 -0
  77. package/dist/engine/models/providers/qwen/index.js +2 -0
  78. package/dist/engine/models/providers/qwen/index.js.map +1 -0
  79. package/dist/engine/models/ranking.d.ts +15 -0
  80. package/dist/engine/models/ranking.js +2 -0
  81. package/dist/engine/models/ranking.js.map +1 -0
  82. package/dist/engine/models/types.d.ts +30 -0
  83. package/dist/engine/models/types.js +2 -0
  84. package/dist/engine/models/types.js.map +1 -0
  85. package/dist/engine/pipeline/indexing/extractor/code/adapter.d.ts +19 -0
  86. package/dist/engine/pipeline/indexing/extractor/code/adapter.js +24 -0
  87. package/dist/engine/pipeline/indexing/extractor/code/adapter.js.map +1 -0
  88. package/dist/engine/pipeline/indexing/extractor/code/extractor.d.ts +14 -0
  89. package/dist/engine/pipeline/indexing/extractor/code/extractor.js +594 -0
  90. package/dist/engine/pipeline/indexing/extractor/code/extractor.js.map +1 -0
  91. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.d.ts +2 -0
  92. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js +116 -0
  93. package/dist/engine/pipeline/indexing/extractor/code/families/c-family.js.map +1 -0
  94. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.d.ts +12 -0
  95. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js +112 -0
  96. package/dist/engine/pipeline/indexing/extractor/code/families/js-ts.js.map +1 -0
  97. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.d.ts +8 -0
  98. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js +83 -0
  99. package/dist/engine/pipeline/indexing/extractor/code/families/metadata.js.map +1 -0
  100. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.d.ts +3 -0
  101. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js +22 -0
  102. package/dist/engine/pipeline/indexing/extractor/code/families/name-field.js.map +1 -0
  103. package/dist/engine/pipeline/indexing/extractor/code/languages/c.d.ts +1 -0
  104. package/dist/engine/pipeline/indexing/extractor/code/languages/c.js +15 -0
  105. package/dist/engine/pipeline/indexing/extractor/code/languages/c.js.map +1 -0
  106. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.d.ts +1 -0
  107. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js +18 -0
  108. package/dist/engine/pipeline/indexing/extractor/code/languages/cpp.js.map +1 -0
  109. package/dist/engine/pipeline/indexing/extractor/code/languages/go.d.ts +2 -0
  110. package/dist/engine/pipeline/indexing/extractor/code/languages/go.js +72 -0
  111. package/dist/engine/pipeline/indexing/extractor/code/languages/go.js.map +1 -0
  112. package/dist/engine/pipeline/indexing/extractor/code/languages/java.d.ts +1 -0
  113. package/dist/engine/pipeline/indexing/extractor/code/languages/java.js +17 -0
  114. package/dist/engine/pipeline/indexing/extractor/code/languages/java.js.map +1 -0
  115. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.d.ts +2 -0
  116. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js +25 -0
  117. package/dist/engine/pipeline/indexing/extractor/code/languages/javascript.js.map +1 -0
  118. package/dist/engine/pipeline/indexing/extractor/code/languages/python.d.ts +2 -0
  119. package/dist/engine/pipeline/indexing/extractor/code/languages/python.js +53 -0
  120. package/dist/engine/pipeline/indexing/extractor/code/languages/python.js.map +1 -0
  121. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.d.ts +2 -0
  122. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js +29 -0
  123. package/dist/engine/pipeline/indexing/extractor/code/languages/rust.js.map +1 -0
  124. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.d.ts +2 -0
  125. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js +37 -0
  126. package/dist/engine/pipeline/indexing/extractor/code/languages/typescript.js.map +1 -0
  127. package/dist/engine/pipeline/indexing/extractor/index.d.ts +44 -0
  128. package/dist/engine/pipeline/indexing/extractor/index.js +281 -0
  129. package/dist/engine/pipeline/indexing/extractor/index.js.map +1 -0
  130. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.d.ts +13 -0
  131. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js +339 -0
  132. package/dist/engine/pipeline/indexing/extractor/markdown/extractor.js.map +1 -0
  133. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.d.ts +4 -0
  134. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js +49 -0
  135. package/dist/engine/pipeline/indexing/extractor/tree-sitter/grammar.js.map +1 -0
  136. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.d.ts +3 -0
  137. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js +26 -0
  138. package/dist/engine/pipeline/indexing/extractor/tree-sitter/nodes.js.map +1 -0
  139. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.d.ts +2 -0
  140. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js +31 -0
  141. package/dist/engine/pipeline/indexing/extractor/tree-sitter/parser.js.map +1 -0
  142. package/dist/engine/pipeline/indexing/ids.d.ts +1 -0
  143. package/dist/engine/pipeline/indexing/ids.js +5 -0
  144. package/dist/engine/pipeline/indexing/ids.js.map +1 -0
  145. package/dist/engine/pipeline/indexing/index.d.ts +12 -0
  146. package/dist/engine/pipeline/indexing/index.js +538 -0
  147. package/dist/engine/pipeline/indexing/index.js.map +1 -0
  148. package/dist/engine/pipeline/indexing/root-paths.d.ts +7 -0
  149. package/dist/engine/pipeline/indexing/root-paths.js +151 -0
  150. package/dist/engine/pipeline/indexing/root-paths.js.map +1 -0
  151. package/dist/engine/pipeline/indexing/scanner/index.d.ts +5 -0
  152. package/dist/engine/pipeline/indexing/scanner/index.js +504 -0
  153. package/dist/engine/pipeline/indexing/scanner/index.js.map +1 -0
  154. package/dist/engine/pipeline/search/index.d.ts +12 -0
  155. package/dist/engine/pipeline/search/index.js +761 -0
  156. package/dist/engine/pipeline/search/index.js.map +1 -0
  157. package/dist/engine/service/index.d.ts +2 -0
  158. package/dist/engine/service/index.js +2 -0
  159. package/dist/engine/service/index.js.map +1 -0
  160. package/dist/engine/service/lexical.d.ts +29 -0
  161. package/dist/engine/service/lexical.js +482 -0
  162. package/dist/engine/service/lexical.js.map +1 -0
  163. package/dist/engine/service/root.d.ts +15 -0
  164. package/dist/engine/service/root.js +44 -0
  165. package/dist/engine/service/root.js.map +1 -0
  166. package/dist/engine/service/types.d.ts +157 -0
  167. package/dist/engine/service/types.js +2 -0
  168. package/dist/engine/service/types.js.map +1 -0
  169. package/dist/engine/service/zvec-grep.d.ts +2 -0
  170. package/dist/engine/service/zvec-grep.js +935 -0
  171. package/dist/engine/service/zvec-grep.js.map +1 -0
  172. package/dist/engine/storage/index.d.ts +42 -0
  173. package/dist/engine/storage/index.js +2 -0
  174. package/dist/engine/storage/index.js.map +1 -0
  175. package/dist/engine/storage/zvec.d.ts +51 -0
  176. package/dist/engine/storage/zvec.js +706 -0
  177. package/dist/engine/storage/zvec.js.map +1 -0
  178. package/dist/engine/types.d.ts +266 -0
  179. package/dist/engine/types.js +14 -0
  180. package/dist/engine/types.js.map +1 -0
  181. package/dist/engine/utils/glob.d.ts +6 -0
  182. package/dist/engine/utils/glob.js +110 -0
  183. package/dist/engine/utils/glob.js.map +1 -0
  184. package/dist/engine/utils/hash.d.ts +2 -0
  185. package/dist/engine/utils/hash.js +8 -0
  186. package/dist/engine/utils/hash.js.map +1 -0
  187. package/dist/engine/utils/json.d.ts +4 -0
  188. package/dist/engine/utils/json.js +45 -0
  189. package/dist/engine/utils/json.js.map +1 -0
  190. package/dist/engine/utils/lock.d.ts +19 -0
  191. package/dist/engine/utils/lock.js +254 -0
  192. package/dist/engine/utils/lock.js.map +1 -0
  193. package/dist/engine/utils/path.d.ts +4 -0
  194. package/dist/engine/utils/path.js +18 -0
  195. package/dist/engine/utils/path.js.map +1 -0
  196. package/dist/index.d.ts +6 -0
  197. package/dist/index.js +4 -0
  198. package/dist/index.js.map +1 -0
  199. package/package.json +47 -0
  200. package/skills/zvec-grep/SKILL.md +141 -0
  201. package/skills/zvec-grep/agents/openai.yaml +4 -0
@@ -0,0 +1,56 @@
1
+ import type { CodeSymbolType, ZvecGrepContextRoute } from "../index.js";
2
+ export type ColorMode = "auto" | "always" | "never";
3
+ export type PreviewMode = "none" | "short" | "full";
4
+ export type CliOptions = {
5
+ help?: boolean;
6
+ version?: boolean;
7
+ init?: boolean;
8
+ info?: boolean;
9
+ collections?: boolean;
10
+ collection?: string;
11
+ rg?: boolean;
12
+ rgCompatibilityOptions?: string[];
13
+ rgOptions?: CliRgOptions;
14
+ rgPaths?: string[];
15
+ debug?: boolean;
16
+ trace?: boolean;
17
+ human?: boolean;
18
+ preview?: PreviewMode;
19
+ color?: ColorMode;
20
+ home?: string;
21
+ embedding?: string;
22
+ modelCacheDir?: string;
23
+ llamaGpu?: "auto" | "metal" | "vulkan" | "cuda" | false;
24
+ embeddingParallelism?: number;
25
+ apiKey?: string;
26
+ endpoint?: string;
27
+ limit?: number;
28
+ routes?: ZvecGrepContextRoute[];
29
+ rebuild?: boolean;
30
+ resetPaths?: boolean;
31
+ noFallback?: boolean;
32
+ noAutoUpdate?: boolean;
33
+ preferSymbol?: boolean;
34
+ includePaths?: string[];
35
+ excludePaths?: string[];
36
+ modifiedAfter?: number;
37
+ modifiedBefore?: number;
38
+ symbolTypes?: CodeSymbolType[];
39
+ embeddingConcurrency?: number;
40
+ };
41
+ export type CliRgOptions = {
42
+ patterns?: string[];
43
+ extraArgs?: string[];
44
+ fixedStrings?: boolean;
45
+ ignoreCase?: boolean;
46
+ wordRegexp?: boolean;
47
+ beforeContext?: number;
48
+ afterContext?: number;
49
+ hidden?: boolean;
50
+ };
51
+ export type ParsedArgs = {
52
+ options: CliOptions;
53
+ positionals: string[];
54
+ };
55
+ export declare const DEFAULT_LIMIT = 10;
56
+ export declare const VALID_SYMBOL_TYPES: Set<CodeSymbolType>;
@@ -0,0 +1,10 @@
1
+ export const DEFAULT_LIMIT = 10;
2
+ export const VALID_SYMBOL_TYPES = new Set([
3
+ "module",
4
+ "class",
5
+ "interface",
6
+ "function",
7
+ "value",
8
+ "alias",
9
+ ]);
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AA2EA,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAGhC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAiB;IACxD,QAAQ;IACR,OAAO;IACP,WAAW;IACX,UAAU;IACV,OAAO;IACP,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function readPackageVersion(): string;
@@ -0,0 +1,11 @@
1
+ import { readFileSync } from "node:fs";
2
+ export function readPackageVersion() {
3
+ try {
4
+ const packageJson = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
5
+ return typeof packageJson.version === "string" ? packageJson.version : "0.0.0";
6
+ }
7
+ catch {
8
+ return "0.0.0";
9
+ }
10
+ }
11
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAC;QAE5B,OAAO,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { EmbeddingModel } from "../models/embeddings.js";
2
+ import { type StoredEntity } from "../storage/index.js";
3
+ import type { CollectionIndexStatus, CollectionInfo, EntitySearchDiagnosis, FileDiagnosis, FileInfo, IndexOptions, IndexResult, RootPath, SearchPlan, SearchPlanResult } from "../types.js";
4
+ export declare class Collection {
5
+ readonly info: CollectionInfo;
6
+ private readonly embeddingModel?;
7
+ private readonly readOnly;
8
+ private readonly storage;
9
+ constructor(info: CollectionInfo, embeddingModel?: EmbeddingModel | undefined, readOnly?: boolean);
10
+ get id(): string;
11
+ get name(): string;
12
+ index(options?: IndexOptions): Promise<IndexResult>;
13
+ status(): Promise<CollectionIndexStatus>;
14
+ searchPlan(plan: SearchPlan): Promise<SearchPlanResult>;
15
+ diagnoseFile(absolutePath: string): FileDiagnosis;
16
+ diagnoseEntitySearch(query: string, entityId: string): Promise<EntitySearchDiagnosis>;
17
+ diagnoseFileSearch(query: string, absolutePath: string): Promise<EntitySearchDiagnosis | null>;
18
+ getFile(absolutePath: string): FileInfo | null;
19
+ listEntitiesByFile(fileId: string, options?: {
20
+ limit?: number;
21
+ offset?: number;
22
+ }): StoredEntity[];
23
+ getEntity(entityId: string): StoredEntity | null;
24
+ close(): void;
25
+ private validateIndexVersion;
26
+ private validateEmbeddingSchema;
27
+ private requireEmbeddingModel;
28
+ }
29
+ export declare class CollectionRegistry {
30
+ readonly home: string;
31
+ private readonly embeddingModel?;
32
+ private readonly readOnly;
33
+ private readonly registryPath;
34
+ private readonly collections;
35
+ constructor(home?: string, embeddingModel?: EmbeddingModel | undefined, readOnly?: boolean);
36
+ list(): CollectionInfo[];
37
+ get(name: string): CollectionInfo | null;
38
+ has(name: string): boolean;
39
+ remove(name: string): boolean;
40
+ rename(name: string, nextName: string): CollectionInfo | null;
41
+ status(name: string): Promise<CollectionIndexStatus | null>;
42
+ create(name: string, rootPaths: readonly (string | RootPath)[], path?: string): CollectionInfo;
43
+ updateRootPaths(name: string, rootPaths: readonly (string | RootPath)[]): CollectionInfo | null;
44
+ open(name: string): Collection;
45
+ close(): void;
46
+ private readRegistry;
47
+ private readCollection;
48
+ private readCollectionFiles;
49
+ }
50
+ export declare function defaultCollectionName(path: string): string;
@@ -0,0 +1,388 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdirSync, rmSync } from "node:fs";
3
+ import { basename, join } from "node:path";
4
+ import { collectionDetail, detail, EngineError, errorDetails, } from "../errors/index.js";
5
+ import { getCollectionIndexStatus, indexCollection, } from "../pipeline/indexing/index.js";
6
+ import { fileBelongsToRootPath, validateRootPaths, } from "../pipeline/indexing/root-paths.js";
7
+ import { diagnoseEntitySearch, diagnoseFileSearch, searchPlanCollection, } from "../pipeline/search/index.js";
8
+ import { ZvecCollectionStorage, } from "../storage/index.js";
9
+ import { CURRENT_INDEX_VERSION } from "../types.js";
10
+ import { readJsonFileSync, writeJsonFileSync } from "../utils/json.js";
11
+ import { defaultHome, normalizePath } from "../utils/path.js";
12
+ const REGISTRY_FILE = "registry.json";
13
+ const COLLECTION_FILE = "collection.json";
14
+ export class Collection {
15
+ info;
16
+ embeddingModel;
17
+ readOnly;
18
+ storage;
19
+ constructor(info, embeddingModel, readOnly = false) {
20
+ this.info = info;
21
+ this.embeddingModel = embeddingModel;
22
+ this.readOnly = readOnly;
23
+ this.validateIndexVersion();
24
+ if (this.embeddingModel) {
25
+ this.validateEmbeddingSchema(this.embeddingModel);
26
+ }
27
+ const filesManifest = readJsonFileSync(ZvecCollectionStorage.filesManifestPath(info.path), ZvecCollectionStorage.emptyManifest());
28
+ this.storage = new ZvecCollectionStorage(info.path, info.embedding, filesManifest.files, readOnly);
29
+ }
30
+ get id() {
31
+ return this.info.id;
32
+ }
33
+ get name() {
34
+ return this.info.name;
35
+ }
36
+ index(options = {}) {
37
+ if (this.readOnly) {
38
+ throw new EngineError("Cannot index a read-only collection", {
39
+ code: "ZVEC_GREP.ENGINE.COLLECTION.READ_ONLY",
40
+ context: collectionOperationDetails(this.name, "index"),
41
+ });
42
+ }
43
+ const embeddingModel = this.requireEmbeddingModel("index");
44
+ return indexCollection({
45
+ collection: this.info,
46
+ embeddingModel,
47
+ storage: this.storage,
48
+ embeddingConcurrency: options.embeddingConcurrency,
49
+ onProgress: options.onProgress,
50
+ });
51
+ }
52
+ status() {
53
+ return getCollectionIndexStatus(this.info, this.storage.listFiles());
54
+ }
55
+ searchPlan(plan) {
56
+ return searchPlanCollection(plan, {
57
+ collection: this.info,
58
+ embeddingModel: this.embeddingModel,
59
+ storage: this.storage,
60
+ });
61
+ }
62
+ diagnoseFile(absolutePath) {
63
+ const path = normalizePath(absolutePath);
64
+ const file = this.storage.getFileByPath(path);
65
+ const matchedRootPath = this.info.rootPaths.find((rootPath) => fileBelongsToRootPath(path, rootPath));
66
+ return {
67
+ collectionId: this.id,
68
+ collectionName: this.name,
69
+ absolutePath: path,
70
+ belongsToCollection: matchedRootPath !== undefined,
71
+ matchedRootPath: matchedRootPath?.absolutePath,
72
+ file: file ?? undefined,
73
+ entityCount: file?.indexStatus?.entityCount ?? 0,
74
+ reason: file
75
+ ? undefined
76
+ : matchedRootPath
77
+ ? "File belongs to this collection but has not been indexed"
78
+ : "File is outside this collection roots or excluded by root patterns",
79
+ };
80
+ }
81
+ diagnoseEntitySearch(query, entityId) {
82
+ const embeddingModel = this.requireEmbeddingModel("diagnose");
83
+ return diagnoseEntitySearch(query, entityId, {
84
+ collection: this.info,
85
+ embeddingModel,
86
+ storage: this.storage,
87
+ });
88
+ }
89
+ diagnoseFileSearch(query, absolutePath) {
90
+ const embeddingModel = this.requireEmbeddingModel("diagnose");
91
+ return diagnoseFileSearch(query, absolutePath, {
92
+ collection: this.info,
93
+ embeddingModel,
94
+ storage: this.storage,
95
+ });
96
+ }
97
+ getFile(absolutePath) {
98
+ return this.storage.getFileByPath(absolutePath);
99
+ }
100
+ listEntitiesByFile(fileId, options = {}) {
101
+ return this.storage.listEntitiesByFile(fileId, options);
102
+ }
103
+ getEntity(entityId) {
104
+ return this.storage.getEntity(entityId);
105
+ }
106
+ close() {
107
+ this.storage.close();
108
+ }
109
+ validateIndexVersion() {
110
+ if (this.info.indexVersion !== CURRENT_INDEX_VERSION) {
111
+ throw new EngineError("Collection index version is not supported", {
112
+ code: "ZVEC_GREP.ENGINE.COLLECTION.INDEX_VERSION_MISMATCH",
113
+ context: errorDetails([
114
+ collectionDetail(this.name),
115
+ detail("expected", CURRENT_INDEX_VERSION),
116
+ detail("actual", this.info.indexVersion),
117
+ ]),
118
+ });
119
+ }
120
+ }
121
+ validateEmbeddingSchema(current) {
122
+ this.validateIndexVersion();
123
+ const expected = this.info.embedding;
124
+ if (expected.provider !== current.ref.provider) {
125
+ throw new EngineError("Collection embedding provider does not match current model", {
126
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_PROVIDER_MISMATCH",
127
+ context: collectionMismatchDetails(this.name, expected.provider, current.ref.provider),
128
+ });
129
+ }
130
+ if (expected.model !== current.ref.model) {
131
+ throw new EngineError("Collection embedding model does not match current model", {
132
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_MODEL_MISMATCH",
133
+ context: collectionMismatchDetails(this.name, expected.model, current.ref.model),
134
+ });
135
+ }
136
+ if (expected.dimension !== current.dimension) {
137
+ throw new EngineError("Collection embedding dimension does not match current model", {
138
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_DIMENSION_MISMATCH",
139
+ context: collectionMismatchDetails(this.name, expected.dimension, current.dimension),
140
+ });
141
+ }
142
+ if (expected.metric !== current.metric) {
143
+ throw new EngineError("Collection embedding metric does not match current model", {
144
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_METRIC_MISMATCH",
145
+ context: collectionMismatchDetails(this.name, expected.metric, current.metric),
146
+ });
147
+ }
148
+ }
149
+ requireEmbeddingModel(operation) {
150
+ if (!this.embeddingModel) {
151
+ throw new EngineError("Collection operation requires an embedding model", {
152
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_MODEL_REQUIRED",
153
+ context: collectionOperationDetails(this.name, operation),
154
+ });
155
+ }
156
+ return this.embeddingModel;
157
+ }
158
+ }
159
+ function collectionOperationDetails(name, operation) {
160
+ return errorDetails([
161
+ collectionDetail(name),
162
+ detail("operation", operation),
163
+ ]);
164
+ }
165
+ function collectionMismatchDetails(name, expected, actual) {
166
+ return errorDetails([
167
+ collectionDetail(name),
168
+ detail("expected", expected),
169
+ detail("actual", actual),
170
+ ]);
171
+ }
172
+ export class CollectionRegistry {
173
+ home;
174
+ embeddingModel;
175
+ readOnly;
176
+ registryPath;
177
+ collections = new Map();
178
+ constructor(home = defaultHome(), embeddingModel, readOnly = false) {
179
+ this.home = home;
180
+ this.embeddingModel = embeddingModel;
181
+ this.readOnly = readOnly;
182
+ if (!readOnly) {
183
+ mkdirSync(home, { recursive: true });
184
+ }
185
+ this.registryPath = join(home, REGISTRY_FILE);
186
+ }
187
+ list() {
188
+ return this.readRegistry().collections.map((entry) => this.readCollection(entry.path));
189
+ }
190
+ get(name) {
191
+ const entry = this.readRegistry().collections.find((collection) => collection.name === name);
192
+ return entry ? this.readCollection(entry.path) : null;
193
+ }
194
+ has(name) {
195
+ return this.get(name) !== null;
196
+ }
197
+ remove(name) {
198
+ if (this.readOnly) {
199
+ throw new EngineError("Cannot remove a collection from a read-only registry", {
200
+ code: "ZVEC_GREP.ENGINE.COLLECTION.READ_ONLY",
201
+ context: collectionOperationDetails(name, "remove"),
202
+ });
203
+ }
204
+ const registry = this.readRegistry();
205
+ const entry = registry.collections.find((collection) => collection.name === name);
206
+ if (!entry) {
207
+ return false;
208
+ }
209
+ const cached = this.collections.get(name);
210
+ if (cached) {
211
+ cached.close();
212
+ this.collections.delete(name);
213
+ }
214
+ registry.collections = registry.collections.filter((collection) => collection.name !== name);
215
+ writeJsonFileSync(this.registryPath, registry);
216
+ rmSync(entry.path, { recursive: true, force: true });
217
+ return true;
218
+ }
219
+ rename(name, nextName) {
220
+ if (this.readOnly) {
221
+ throw new EngineError("Cannot rename a collection from a read-only registry", {
222
+ code: "ZVEC_GREP.ENGINE.COLLECTION.READ_ONLY",
223
+ context: collectionOperationDetails(name, "rename"),
224
+ });
225
+ }
226
+ const normalizedNextName = nextName.trim();
227
+ if (normalizedNextName.length === 0) {
228
+ throw new EngineError("Collection rename requires a non-empty name", {
229
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMPTY_NAME",
230
+ context: collectionOperationDetails(name, "rename"),
231
+ });
232
+ }
233
+ const registry = this.readRegistry();
234
+ const entry = registry.collections.find((collection) => collection.name === name);
235
+ if (!entry) {
236
+ return null;
237
+ }
238
+ if (registry.collections.some((collection) => collection.name === normalizedNextName)) {
239
+ throw new EngineError("Collection already exists", {
240
+ code: "ZVEC_GREP.ENGINE.COLLECTION.ALREADY_EXISTS",
241
+ context: errorDetails([collectionDetail(normalizedNextName)]),
242
+ });
243
+ }
244
+ const cached = this.collections.get(name);
245
+ if (cached) {
246
+ cached.close();
247
+ this.collections.delete(name);
248
+ }
249
+ const info = this.readCollection(entry.path);
250
+ const updated = {
251
+ ...info,
252
+ name: normalizedNextName,
253
+ updatedTime: Date.now(),
254
+ };
255
+ entry.name = normalizedNextName;
256
+ writeJsonFileSync(join(entry.path, COLLECTION_FILE), updated);
257
+ writeJsonFileSync(this.registryPath, registry);
258
+ return updated;
259
+ }
260
+ async status(name) {
261
+ const info = this.get(name);
262
+ if (!info) {
263
+ return null;
264
+ }
265
+ return getCollectionIndexStatus(info, this.readCollectionFiles(info.path));
266
+ }
267
+ create(name, rootPaths, path) {
268
+ if (this.readOnly) {
269
+ throw new EngineError("Cannot create a collection in a read-only registry", {
270
+ code: "ZVEC_GREP.ENGINE.COLLECTION.READ_ONLY",
271
+ context: collectionOperationDetails(name, "create"),
272
+ });
273
+ }
274
+ if (!this.embeddingModel) {
275
+ throw new EngineError("Creating a collection requires an embedding model", {
276
+ code: "ZVEC_GREP.ENGINE.COLLECTION.EMBEDDING_MODEL_REQUIRED",
277
+ context: collectionOperationDetails(name, "create"),
278
+ });
279
+ }
280
+ if (this.has(name)) {
281
+ throw new EngineError("Collection already exists", {
282
+ code: "ZVEC_GREP.ENGINE.COLLECTION.ALREADY_EXISTS",
283
+ context: errorDetails([collectionDetail(name)]),
284
+ });
285
+ }
286
+ const id = randomUUID();
287
+ const collectionPath = normalizePath(path ?? join(this.home, "collections", id));
288
+ const now = Date.now();
289
+ const normalizedRootPaths = validateRootPaths(rootPaths);
290
+ const info = {
291
+ id,
292
+ name,
293
+ path: collectionPath,
294
+ rootPaths: normalizedRootPaths,
295
+ embedding: currentEmbeddingSchema(this.embeddingModel),
296
+ indexVersion: CURRENT_INDEX_VERSION,
297
+ createdTime: now,
298
+ updatedTime: now,
299
+ };
300
+ mkdirSync(collectionPath, { recursive: true });
301
+ writeJsonFileSync(join(collectionPath, COLLECTION_FILE), info);
302
+ const registry = this.readRegistry();
303
+ registry.collections.push({ id, name, path: collectionPath });
304
+ writeJsonFileSync(this.registryPath, registry);
305
+ return info;
306
+ }
307
+ updateRootPaths(name, rootPaths) {
308
+ if (this.readOnly) {
309
+ throw new EngineError("Cannot update a collection from a read-only registry", {
310
+ code: "ZVEC_GREP.ENGINE.COLLECTION.READ_ONLY",
311
+ context: collectionOperationDetails(name, "updateRootPaths"),
312
+ });
313
+ }
314
+ const registry = this.readRegistry();
315
+ const entry = registry.collections.find((collection) => collection.name === name);
316
+ if (!entry) {
317
+ return null;
318
+ }
319
+ const info = this.readCollection(entry.path);
320
+ const normalizedRootPaths = validateRootPaths(rootPaths);
321
+ if (rootPathsEqual(info.rootPaths, normalizedRootPaths)) {
322
+ return info;
323
+ }
324
+ const cached = this.collections.get(name);
325
+ if (cached) {
326
+ cached.close();
327
+ this.collections.delete(name);
328
+ }
329
+ const updated = {
330
+ ...info,
331
+ rootPaths: normalizedRootPaths,
332
+ updatedTime: Date.now(),
333
+ };
334
+ writeJsonFileSync(join(entry.path, COLLECTION_FILE), updated);
335
+ return updated;
336
+ }
337
+ open(name) {
338
+ const cached = this.collections.get(name);
339
+ if (cached) {
340
+ return cached;
341
+ }
342
+ const info = this.get(name);
343
+ if (!info) {
344
+ throw new EngineError("Collection not found", {
345
+ code: "ZVEC_GREP.ENGINE.COLLECTION.NOT_FOUND",
346
+ context: errorDetails([collectionDetail(name)]),
347
+ });
348
+ }
349
+ const collection = new Collection(info, this.embeddingModel, this.readOnly);
350
+ this.collections.set(name, collection);
351
+ return collection;
352
+ }
353
+ close() {
354
+ for (const collection of this.collections.values()) {
355
+ collection.close();
356
+ }
357
+ this.collections.clear();
358
+ }
359
+ readRegistry() {
360
+ return readJsonFileSync(this.registryPath, { collections: [] });
361
+ }
362
+ readCollection(path) {
363
+ return readJsonFileSync(join(path, COLLECTION_FILE), null);
364
+ }
365
+ readCollectionFiles(path) {
366
+ const manifest = readJsonFileSync(ZvecCollectionStorage.filesManifestPath(path), { files: [] });
367
+ return manifest.files.map(fileRecordToInfo);
368
+ }
369
+ }
370
+ export function defaultCollectionName(path) {
371
+ return basename(normalizePath(path));
372
+ }
373
+ function currentEmbeddingSchema(model) {
374
+ return {
375
+ provider: model.ref.provider,
376
+ model: model.ref.model,
377
+ dimension: model.dimension,
378
+ metric: model.metric,
379
+ };
380
+ }
381
+ function rootPathsEqual(left, right) {
382
+ return JSON.stringify(left) === JSON.stringify(right);
383
+ }
384
+ function fileRecordToInfo(file) {
385
+ const { entityIds: _entityIds, ...info } = file;
386
+ return info;
387
+ }
388
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/collection/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ type ErrorDetailValue = string | number | boolean | null | undefined;
2
+ export type ErrorDetailEntry = string | readonly [string, ErrorDetailValue] | null | undefined;
3
+ export declare function errorDetails(entries: readonly ErrorDetailEntry[]): string | undefined;
4
+ export declare function detail(key: string, value: ErrorDetailValue): ErrorDetailEntry;
5
+ export declare function collectionDetail(name: string): ErrorDetailEntry;
6
+ export {};
@@ -0,0 +1,27 @@
1
+ const ANONYMOUS_COLLECTION_NAME = "__anonymous__";
2
+ export function errorDetails(entries) {
3
+ const lines = entries
4
+ .map(formatDetailEntry)
5
+ .filter((line) => line !== null && line.length > 0);
6
+ return lines.length > 0 ? lines.join("\n") : undefined;
7
+ }
8
+ export function detail(key, value) {
9
+ return value === null || value === undefined ? null : [key, value];
10
+ }
11
+ export function collectionDetail(name) {
12
+ return name === ANONYMOUS_COLLECTION_NAME ? null : detail("collection", name);
13
+ }
14
+ function formatDetailEntry(entry) {
15
+ if (entry === null || entry === undefined) {
16
+ return null;
17
+ }
18
+ if (typeof entry === "string") {
19
+ return entry.trim().length > 0 ? entry.trim() : null;
20
+ }
21
+ const [key, value] = entry;
22
+ if (value === null || value === undefined) {
23
+ return null;
24
+ }
25
+ return `${key}=${String(value)}`;
26
+ }
27
+ //# sourceMappingURL=details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../src/engine/errors/details.ts"],"names":[],"mappings":"AAUA,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAGlD,MAAM,UAAU,YAAY,CAAC,OAAoC;IAC/D,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,iBAAiB,CAAC;SACtB,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,KAAuB;IACzD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChF,CAAC;AAGD,SAAS,iBAAiB,CAAC,KAAuB;IAChD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare const ENGINE_ERROR_CODE_PREFIX = "ZVEC_GREP.ENGINE";
2
+ export type EngineErrorCode = `${typeof ENGINE_ERROR_CODE_PREFIX}.${string}`;
3
+ export type EngineErrorOptions = {
4
+ code: EngineErrorCode;
5
+ context?: string;
6
+ cause?: unknown;
7
+ };
8
+ export declare class EngineError extends Error {
9
+ readonly code: EngineErrorCode;
10
+ readonly context?: string;
11
+ constructor(message: string, options: EngineErrorOptions);
12
+ }
13
+ export declare function isEngineError(error: unknown): error is EngineError;
14
+ export { collectionDetail, detail, errorDetails, type ErrorDetailEntry, } from "./details.js";
@@ -0,0 +1,16 @@
1
+ export const ENGINE_ERROR_CODE_PREFIX = "ZVEC_GREP.ENGINE";
2
+ export class EngineError extends Error {
3
+ code;
4
+ context;
5
+ constructor(message, options) {
6
+ super(message, { cause: options.cause });
7
+ this.name = "EngineError";
8
+ this.code = options.code;
9
+ this.context = options.context;
10
+ }
11
+ }
12
+ export function isEngineError(error) {
13
+ return error instanceof EngineError;
14
+ }
15
+ export { collectionDetail, detail, errorDetails, } from "./details.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/errors/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAa3D,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAkB;IACtB,OAAO,CAAU;IAG1B,YAAY,OAAe,EAAE,OAA2B;QACtD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;CACF;AAGD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,WAAW,CAAC;AACtC,CAAC;AAGD,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,YAAY,GAEb,MAAM,cAAc,CAAC"}