lmgrep 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +36 -1
  2. package/dist/application/LmgrepFactory.d.ts +5 -0
  3. package/dist/application/LmgrepFactory.js +28 -5
  4. package/dist/application/LmgrepFactory.js.map +1 -1
  5. package/dist/application/indexing/IndexBuilder.js +2 -0
  6. package/dist/application/indexing/IndexBuilder.js.map +1 -1
  7. package/dist/application/operations/IndexAlternatives.js +7 -0
  8. package/dist/application/operations/IndexAlternatives.js.map +1 -1
  9. package/dist/application/search/SearchService.d.ts +3 -1
  10. package/dist/application/search/SearchService.js +9 -1
  11. package/dist/application/search/SearchService.js.map +1 -1
  12. package/dist/domain/ports/IndexPathPort.d.ts +3 -0
  13. package/dist/domain/ports/IndexPathPort.js +2 -0
  14. package/dist/domain/ports/IndexPathPort.js.map +1 -0
  15. package/dist/domain/project/EmbeddingProfile.d.ts +14 -0
  16. package/dist/domain/project/EmbeddingProfile.js +34 -0
  17. package/dist/domain/project/EmbeddingProfile.js.map +1 -0
  18. package/dist/domain/project/IndexMetadata.d.ts +2 -0
  19. package/dist/domain/project/ModelIdentity.d.ts +7 -16
  20. package/dist/domain/project/ModelIdentity.js +7 -16
  21. package/dist/domain/project/ModelIdentity.js.map +1 -1
  22. package/dist/domain/project/ProjectLocator.d.ts +3 -1
  23. package/dist/domain/project/ProjectLocator.js +7 -3
  24. package/dist/domain/project/ProjectLocator.js.map +1 -1
  25. package/dist/infrastructure/ai/DockerModelIdentityResolver.d.ts +7 -0
  26. package/dist/infrastructure/ai/DockerModelIdentityResolver.js +55 -0
  27. package/dist/infrastructure/ai/DockerModelIdentityResolver.js.map +1 -0
  28. package/dist/infrastructure/fs/IndexableFileRules.js +4 -0
  29. package/dist/infrastructure/fs/IndexableFileRules.js.map +1 -1
  30. package/dist/infrastructure/fs/ProjectMetadataStore.js +3 -0
  31. package/dist/infrastructure/fs/ProjectMetadataStore.js.map +1 -1
  32. package/dist/infrastructure/fs/VerifiedIndexPath.d.ts +9 -0
  33. package/dist/infrastructure/fs/VerifiedIndexPath.js +42 -0
  34. package/dist/infrastructure/fs/VerifiedIndexPath.js.map +1 -0
  35. package/dist/infrastructure/p2p/IndexShare.js +13 -1
  36. package/dist/infrastructure/p2p/IndexShare.js.map +1 -1
  37. package/dist/infrastructure/p2p/SecureChannel.d.ts +2 -0
  38. package/dist/infrastructure/p2p/SecureChannel.js.map +1 -1
  39. package/dist/infrastructure/treesitter/LanguageCatalog.js +2 -2
  40. package/dist/infrastructure/treesitter/LanguageCatalog.js.map +1 -1
  41. package/dist/presentation/cli/commands/ProjectsCommand.js +3 -1
  42. package/dist/presentation/cli/commands/ProjectsCommand.js.map +1 -1
  43. package/dist/presentation/cli/commands/ShareCommands.js +37 -14
  44. package/dist/presentation/cli/commands/ShareCommands.js.map +1 -1
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -7,7 +7,7 @@ lmgrep uses [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) to parse s
7
7
  ## Features
8
8
 
9
9
  - **Any embedding provider** — works with Ollama, OpenAI, Google, or any provider supported by the [Vercel AI SDK](https://sdk.vercel.ai/)
10
- - **Tree-sitter chunking** — splits code at AST boundaries so search results are complete, meaningful units
10
+ - **Tree-sitter chunking** — splits code at AST boundaries so search results are complete, meaningful units. JavaScript module variants (`.mjs`, `.cjs`) and TypeScript module variants (`.mts`, `.cts`) are indexed by default using their respective language grammars.
11
11
  - **The index lives in the repo** — under `.git/lmgrep/`, so `du` finds it, `rm -rf` removes it, and deleting a clone deletes its index
12
12
  - **One index per model** — switching embedding models selects a different database instead of invalidating the one you have; switching back is instant
13
13
  - **Ask (research mode)** — `lmgrep ask` runs a local model that searches, reads, and synthesizes a cited answer, so agents spend one call instead of many searches
@@ -195,6 +195,41 @@ Each embedding model gets its own subdirectory. Changing `model` in your config
195
195
  selects a different database rather than invalidating the one you have, so
196
196
  trying another model costs one re-index and switching back costs nothing.
197
197
 
198
+ ### Docker model aliases and verified indexes
199
+
200
+ For Docker Model Runner, lmgrep resolves the configured name through the runner's
201
+ `/models` catalog and records its immutable artifact digest, configured dimensions,
202
+ and query/document prefixes in `lmgrep.json`. Those values identify the index;
203
+ repository names and tags do not. Two aliases for the same artifact and settings
204
+ reuse one index, and embedding requests use the resolved digest so a retag during
205
+ indexing cannot silently change the model. Different artifacts or prefix settings
206
+ get separate indexes. Other providers retain their existing name-based lookup.
207
+
208
+ The digest identifies the complete Docker artifact, not just its weights.
209
+ Repackaged artifacts with different digests are kept separate even when their
210
+ model names, architecture, quantization, or reported dimensions match. The runner
211
+ must be reachable to verify identity; an unavailable catalog or missing alias
212
+ produces an explicit error, not a guessed match.
213
+
214
+ Existing directories with a matching recorded embedding profile are reused in
215
+ place. Legacy indexes containing only a model name and dimensions are preserved,
216
+ but cannot be automatically certified: their original artifact and prefixes are
217
+ unknown. `lmgrep index` creates a separate verified index; it does not rename,
218
+ delete, or silently relabel the legacy one. An explicit path cannot bypass a
219
+ profile mismatch. Imports into verified indexes also require matching profiles.
220
+
221
+ The live integration test uses a temporary corpus and the real Docker embedding
222
+ endpoint (no existing indexes are modified):
223
+
224
+ ```sh
225
+ pnpm build
226
+ LMGREP_TEST_DOCKER_MODEL=docker:docker.io/ai/text-embedding-qwen3-embedding-4b:q4_k_m-ctx8k \\
227
+ node --test test/docker-identity-live.test.mjs
228
+ ```
229
+
230
+ Set `LMGREP_TEST_DOCKER_URL` if the runner is not at
231
+ `http://localhost:12434/engines/v1`. Without a model variable, this test is skipped.
232
+
198
233
  ### Changing your embedding model
199
234
 
200
235
  The new model has no index yet, so lmgrep says so and names what you already
@@ -2,6 +2,7 @@ import type { LmgrepConfig } from "../domain/config/LmgrepConfig.js";
2
2
  import type { ChunkerPort } from "../domain/ports/ChunkerPort.js";
3
3
  import type { EmbedderPort } from "../domain/ports/EmbedderPort.js";
4
4
  import type { LoggerPort } from "../domain/ports/LoggerPort.js";
5
+ import { ProjectLocator } from "../domain/project/ProjectLocator.js";
5
6
  import { Lmgrep } from "./Lmgrep.js";
6
7
  export interface LmgrepOptions {
7
8
  cwd: string;
@@ -29,6 +30,10 @@ export interface LmgrepOptions {
29
30
  * dependency direction one-way.
30
31
  */
31
32
  export declare class LmgrepFactory {
33
+ locate(config: LmgrepConfig): Promise<{
34
+ locator: ProjectLocator;
35
+ profile: import("../domain/project/EmbeddingProfile.js").EmbeddingProfile | undefined;
36
+ }>;
32
37
  open(options: LmgrepOptions): Promise<Lmgrep>;
33
38
  /**
34
39
  * Opens another project's database read-only for cross-project search.
@@ -2,6 +2,7 @@ import { ModelIdentity } from "../domain/project/ModelIdentity.js";
2
2
  import { ProjectLocator } from "../domain/project/ProjectLocator.js";
3
3
  import { AiSdkChatModel } from "../infrastructure/ai/AiSdkChatModel.js";
4
4
  import { AiSdkEmbedder } from "../infrastructure/ai/AiSdkEmbedder.js";
5
+ import { DockerModelIdentityResolver } from "../infrastructure/ai/DockerModelIdentityResolver.js";
5
6
  import { LocalModelReloader } from "../infrastructure/ai/LocalModelReloader.js";
6
7
  import { ConfigLoader } from "../infrastructure/fs/ConfigLoader.js";
7
8
  import { DatabaseLocks } from "../infrastructure/fs/DatabaseLocks.js";
@@ -10,6 +11,7 @@ import { ProjectIndexes } from "../infrastructure/fs/ProjectIndexes.js";
10
11
  import { ProjectMetadataStore } from "../infrastructure/fs/ProjectMetadataStore.js";
11
12
  import { ProjectRegistry } from "../infrastructure/fs/ProjectRegistry.js";
12
13
  import { StateDirectory } from "../infrastructure/fs/StateDirectory.js";
14
+ import { VerifiedIndexPath } from "../infrastructure/fs/VerifiedIndexPath.js";
13
15
  import { Workspace } from "../infrastructure/fs/Workspace.js";
14
16
  import { GitClient } from "../infrastructure/git/GitClient.js";
15
17
  import { ChunkRepository } from "../infrastructure/lancedb/ChunkRepository.js";
@@ -35,6 +37,13 @@ import { SearchTargetResolver, } from "./search/SearchTargetResolver.js";
35
37
  * dependency direction one-way.
36
38
  */
37
39
  export class LmgrepFactory {
40
+ async locate(config) {
41
+ const profile = await new DockerModelIdentityResolver().resolve(config);
42
+ const locator = new ProjectLocator(new GitClient(), new StateDirectory(), ModelIdentity.of(config.model), config.dimensions, profile
43
+ ? new VerifiedIndexPath(profile, new ProjectMetadataStore())
44
+ : undefined);
45
+ return { locator, profile };
46
+ }
38
47
  async open(options) {
39
48
  const { cwd } = options;
40
49
  const logger = options.logger ?? new ConsoleLogger();
@@ -47,11 +56,22 @@ export class LmgrepFactory {
47
56
  options.onWarning?.(warning);
48
57
  const state = new StateDirectory();
49
58
  const git = new GitClient();
50
- // The model partitions the databases, so it has to be known before a
51
- // location can be resolved — which is why config loads first.
52
- const locator = new ProjectLocator(git, state, ModelIdentity.of(config.model), config.dimensions);
59
+ const { locator, profile } = await this.locate(config);
53
60
  const location = locator.resolveDatabase(cwd, options.database);
54
61
  const metadata = new ProjectMetadataStore();
62
+ const verifyMetadata = () => {
63
+ const existing = metadata.read(location.path);
64
+ if (existing?.embeddingProfile &&
65
+ !profile?.equals(existing.embeddingProfile)) {
66
+ throw new Error(`Embedding model or settings do not match the index at ${location.path}. Existing index was not changed.`);
67
+ }
68
+ if (profile &&
69
+ metadata.holdsIndex(location.path) &&
70
+ !existing?.embeddingProfile) {
71
+ throw new Error(`Cannot verify the artifact and embedding settings of legacy index at ${location.path}. Use a new index instead; the legacy index is preserved.`);
72
+ }
73
+ };
74
+ verifyMetadata();
55
75
  const registry = new ProjectRegistry(state);
56
76
  const alternatives = new IndexAlternatives(new ProjectIndexes(metadata), locator, location, config, cwd);
57
77
  const locks = new DatabaseLocks(state.locksDirectory(), location.path, location.root);
@@ -59,7 +79,8 @@ export class LmgrepFactory {
59
79
  const manifest = new FileManifestRepository(tables, location.branch);
60
80
  const chunks = new ChunkRepository(tables, manifest, location.branch);
61
81
  const maintenance = new IndexMaintenance(tables, manifest);
62
- const embedder = options.embedder ?? new AiSdkEmbedder(config);
82
+ const embedder = options.embedder ??
83
+ new AiSdkEmbedder(profile ? { ...config, model: profile.data.artifact } : config);
63
84
  const chunker = options.chunker ?? new TreeSitterChunker();
64
85
  const workspace = new Workspace();
65
86
  const reloader = new LocalModelReloader(config);
@@ -78,6 +99,7 @@ export class LmgrepFactory {
78
99
  location,
79
100
  locks,
80
101
  recordMetadata: (dimensions) => {
102
+ verifyMetadata();
81
103
  const project = locator.resolveProject(cwd);
82
104
  metadata.write(location.path, {
83
105
  root: project.root,
@@ -85,6 +107,7 @@ export class LmgrepFactory {
85
107
  branch: location.branch.toString(),
86
108
  model: config.model,
87
109
  dimensions,
110
+ embeddingProfile: profile?.data,
88
111
  });
89
112
  },
90
113
  // The sidecar says what this database is; the registry says that
@@ -106,7 +129,7 @@ export class LmgrepFactory {
106
129
  reloadModel: () => reloader.reload(),
107
130
  isLocalProvider: reloader.isLocal,
108
131
  });
109
- const searcher = new SearchService(embedder, new SearchTargetResolver(cwd, chunks, location, locator, this.foreignOpener(locator)), config, logger, () => metadata.read(location.path), alternatives);
132
+ const searcher = new SearchService(embedder, new SearchTargetResolver(cwd, chunks, location, locator, this.foreignOpener(locator)), config, logger, () => metadata.read(location.path), alternatives, profile);
110
133
  const services = {
111
134
  cwd,
112
135
  config,
@@ -1 +1 @@
1
- {"version":3,"file":"LmgrepFactory.js","sourceRoot":"","sources":["../../src/application/LmgrepFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LmgrepFactory.js","sourceRoot":"","sources":["../../src/application/LmgrepFactory.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ export class IndexBuilder {
36
36
  }
37
37
  async buildLocked(options) {
38
38
  const { logger } = this.deps;
39
+ if (!options.dry)
40
+ this.deps.recordMetadata(undefined);
39
41
  if (options.reset) {
40
42
  logger.info("Resetting index...");
41
43
  await this.deps.maintenance.reset();
@@ -1 +1 @@
1
- {"version":3,"file":"IndexBuilder.js","sourceRoot":"","sources":["../../../src/application/indexing/IndexBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndexBuilder.js","sourceRoot":"","sources":["../../../src/application/indexing/IndexBuilder.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,13 @@ export class IndexAlternatives {
42
42
  const named = others.filter((index) => index.model);
43
43
  const previous = named[0] ?? others[0];
44
44
  const configured = ModelIdentity.of(this.config.model).family;
45
+ if (this.config.model.startsWith("docker:")) {
46
+ return {
47
+ reason: `No verified index matches the Docker artifact and embedding settings for "${this.config.model}". Existing indexes: ${this.describe(named)}.`,
48
+ fix: "Names alone do not prove compatibility. Legacy indexes without a recorded artifact and prefix settings cannot be verified automatically. Run `lmgrep index` to create a verified index; existing indexes are kept.",
49
+ others,
50
+ };
51
+ }
45
52
  return {
46
53
  reason: `This project has no index for "${configured}" — but it is indexed ` +
47
54
  `with ${this.describe(named)}.`,
@@ -1 +1 @@
1
- {"version":3,"file":"IndexAlternatives.js","sourceRoot":"","sources":["../../../src/application/operations/IndexAlternatives.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAWtE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,iBAAiB;IAEX;IACA;IACA;IACA;IACA;IALlB,YACkB,OAA2B,EAC3B,OAAuB,EACvB,QAA0B,EAC1B,MAAoB,EACpB,GAAW;QAJX,YAAO,GAAP,OAAO,CAAoB;QAC3B,YAAO,GAAP,OAAO,CAAgB;QACvB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAQ;IAC1B,CAAC;IAEJ,4DAA4D;IAC5D,MAAM;QACL,oEAAoE;QACpE,+CAA+C;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO;aACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;aAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,cAAc;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAE9D,OAAO;YACN,MAAM,EACL,kCAAkC,UAAU,wBAAwB;gBACpE,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;YAChC,GAAG,EACF,yBAAyB,QAAQ,CAAC,KAAK,IAAI,oBAAoB,kCAAkC;gBACjG,2FAA2F;YAC5F,MAAM;SACN,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,OAAgC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,eAAe,CAAC;QACjD,OAAO,OAAO;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;aACjE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACD"}
1
+ {"version":3,"file":"IndexAlternatives.js","sourceRoot":"","sources":["../../../src/application/operations/IndexAlternatives.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAWtE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,iBAAiB;IAEX;IACA;IACA;IACA;IACA;IALlB,YACkB,OAA2B,EAC3B,OAAuB,EACvB,QAA0B,EAC1B,MAAoB,EACpB,GAAW;QAJX,YAAO,GAAP,OAAO,CAAoB;QAC3B,YAAO,GAAP,OAAO,CAAgB;QACvB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAQ;IAC1B,CAAC;IAEJ,4DAA4D;IAC5D,MAAM;QACL,oEAAoE;QACpE,+CAA+C;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO;aACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;aAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,cAAc;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAE9D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACN,MAAM,EAAE,6EAA6E,IAAI,CAAC,MAAM,CAAC,KAAK,wBAAwB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;gBACrJ,GAAG,EAAE,oNAAoN;gBACzN,MAAM;aACN,CAAC;QACH,CAAC;QAED,OAAO;YACN,MAAM,EACL,kCAAkC,UAAU,wBAAwB;gBACpE,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;YAChC,GAAG,EACF,yBAAyB,QAAQ,CAAC,KAAK,IAAI,oBAAoB,kCAAkC;gBACjG,2FAA2F;YAC5F,MAAM;SACN,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,OAAgC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,eAAe,CAAC;QACjD,OAAO,OAAO;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;aACjE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACD"}
@@ -1,6 +1,7 @@
1
1
  import type { LmgrepConfig } from "../../domain/config/LmgrepConfig.js";
2
2
  import type { EmbedderPort } from "../../domain/ports/EmbedderPort.js";
3
3
  import type { LoggerPort } from "../../domain/ports/LoggerPort.js";
4
+ import type { EmbeddingProfile } from "../../domain/project/EmbeddingProfile.js";
4
5
  import type { IndexMetadata } from "../../domain/project/IndexMetadata.js";
5
6
  import { HitList } from "../../domain/retrieval/HitList.js";
6
7
  import type { IndexAlternatives } from "../operations/IndexAlternatives.js";
@@ -17,13 +18,14 @@ export declare class SearchService {
17
18
  private readonly logger;
18
19
  private readonly readMetadata;
19
20
  private readonly alternatives;
21
+ private readonly profile?;
20
22
  /**
21
23
  * How strongly a `--not` query pushes results away. Full subtraction
22
24
  * overshoots into unrelated space; half keeps the original intent dominant
23
25
  * while still displacing the unwanted sense.
24
26
  */
25
27
  private static readonly NEGATION_WEIGHT;
26
- constructor(embedder: EmbedderPort, targets: SearchTargetResolver, config: LmgrepConfig, logger: LoggerPort, readMetadata: () => IndexMetadata | undefined, alternatives: IndexAlternatives);
28
+ constructor(embedder: EmbedderPort, targets: SearchTargetResolver, config: LmgrepConfig, logger: LoggerPort, readMetadata: () => IndexMetadata | undefined, alternatives: IndexAlternatives, profile?: EmbeddingProfile | undefined);
27
29
  search(query: string, criteria: SearchCriteria): Promise<HitList>;
28
30
  private retrieveFrom;
29
31
  private buildQueryVector;
@@ -12,19 +12,21 @@ export class SearchService {
12
12
  logger;
13
13
  readMetadata;
14
14
  alternatives;
15
+ profile;
15
16
  /**
16
17
  * How strongly a `--not` query pushes results away. Full subtraction
17
18
  * overshoots into unrelated space; half keeps the original intent dominant
18
19
  * while still displacing the unwanted sense.
19
20
  */
20
21
  static NEGATION_WEIGHT = 0.5;
21
- constructor(embedder, targets, config, logger, readMetadata, alternatives) {
22
+ constructor(embedder, targets, config, logger, readMetadata, alternatives, profile) {
22
23
  this.embedder = embedder;
23
24
  this.targets = targets;
24
25
  this.config = config;
25
26
  this.logger = logger;
26
27
  this.readMetadata = readMetadata;
27
28
  this.alternatives = alternatives;
29
+ this.profile = profile;
28
30
  }
29
31
  async search(query, criteria) {
30
32
  const queryVector = await this.buildQueryVector(query, criteria);
@@ -94,6 +96,12 @@ export class SearchService {
94
96
  `your model produces ${queryVector.dimensions}-dim. ` +
95
97
  "These embeddings are incompatible.");
96
98
  }
99
+ if (meta.embeddingProfile) {
100
+ if (!this.profile?.equals(meta.embeddingProfile)) {
101
+ throw new Error("Embedding model or settings do not match the index.");
102
+ }
103
+ return;
104
+ }
97
105
  if (!meta.model)
98
106
  return;
99
107
  const indexModel = ModelIdentity.of(meta.model);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../../src/application/search/SearchService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../../src/application/search/SearchService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAQhF;;;GAGG;AACH,MAAM,OAAO,aAAa;IASP;IACA;IACA;IACA;IACA;IACA;IACA;IAdlB;;;;OAIG;IACK,MAAM,CAAU,eAAe,GAAG,GAAG,CAAC;IAE9C,YACkB,QAAsB,EACtB,OAA6B,EAC7B,MAAoB,EACpB,MAAkB,EAClB,YAA6C,EAC7C,YAA+B,EAC/B,OAA0B;QAN1B,aAAQ,GAAR,QAAQ,CAAc;QACtB,YAAO,GAAP,OAAO,CAAsB;QAC7B,WAAM,GAAN,MAAM,CAAc;QACpB,WAAM,GAAN,MAAM,CAAY;QAClB,iBAAY,GAAZ,YAAY,CAAiC;QAC7C,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,YAAO,GAAP,OAAO,CAAmB;IACzC,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAwB;QACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,iEAAiE;YACjE,oEAAoE;YACpE,6BAA6B;YAC7B,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;gBACnD,IAAI,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,iBAAiB,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClE,CAAC;YACF,CAAC;YACD,MAAM,GAAG,CAAC;QACX,CAAC;gBAAS,CAAC;YACV,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,YAAY,CACzB,OAAuB,EACvB,WAAmB,EACnB,QAAwB;QAExB,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvC,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,gEAAgE;gBAChE,mCAAmC;gBACnC,aAAa,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS;aAC/C,CAAC,CAAC;YAEH,MAAM,GAAG,MAAM,CAAC,MAAM,CACrB,MAAM,CAAC,WAAW;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACpB,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,WAAqB,CAAC,CAChD;gBACF,CAAC,CAAC,IAAI,CACP,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,sDAAsD;QACtD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7D,CAAC,CAAC,MAAM,CAAC;IACX,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC7B,KAAa,EACb,QAAwB;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,WAAmB;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CACd,iCAAiC,IAAI,CAAC,UAAU,mBAAmB;gBAClE,uBAAuB,WAAW,CAAC,UAAU,QAAQ;gBACrD,oCAAoC,CACrC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACxE,CAAC;YACD,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,kCAAkC,IAAI,CAAC,KAAK,MAAM,UAAU,CAAC,MAAM,IAAI;gBACtE,uBAAuB,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,UAAU,CAAC,MAAM,KAAK;gBACpE,gEAAgE,CACjE,CAAC;QACH,CAAC;IACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface IndexPathPort {
2
+ resolve(indexHome: string): string;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IndexPathPort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexPathPort.js","sourceRoot":"","sources":["../../../src/domain/ports/IndexPathPort.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { LmgrepConfig } from "../config/LmgrepConfig.js";
2
+ export interface EmbeddingProfileData {
3
+ artifact: string;
4
+ dimensions?: number;
5
+ queryPrefix: string;
6
+ documentPrefix: string;
7
+ }
8
+ export declare class EmbeddingProfile {
9
+ readonly data: EmbeddingProfileData;
10
+ constructor(data: EmbeddingProfileData);
11
+ static forArtifact(artifact: string, config: LmgrepConfig): EmbeddingProfile;
12
+ equals(other: EmbeddingProfileData): boolean;
13
+ toSlug(): string;
14
+ }
@@ -0,0 +1,34 @@
1
+ import { createHash } from "node:crypto";
2
+ export class EmbeddingProfile {
3
+ data;
4
+ constructor(data) {
5
+ this.data = data;
6
+ }
7
+ static forArtifact(artifact, config) {
8
+ return new EmbeddingProfile({
9
+ artifact,
10
+ dimensions: config.dimensions,
11
+ queryPrefix: config.queryPrefix ?? "",
12
+ documentPrefix: config.documentPrefix ?? "",
13
+ });
14
+ }
15
+ equals(other) {
16
+ return (this.data.artifact === other.artifact &&
17
+ this.data.dimensions === other.dimensions &&
18
+ this.data.queryPrefix === other.queryPrefix &&
19
+ this.data.documentPrefix === other.documentPrefix);
20
+ }
21
+ toSlug() {
22
+ const { artifact, dimensions, queryPrefix, documentPrefix } = this.data;
23
+ const hash = createHash("sha256")
24
+ .update(JSON.stringify([
25
+ artifact,
26
+ dimensions ?? null,
27
+ queryPrefix,
28
+ documentPrefix,
29
+ ]))
30
+ .digest("hex");
31
+ return `embedding-${hash}`;
32
+ }
33
+ }
34
+ //# sourceMappingURL=EmbeddingProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingProfile.js","sourceRoot":"","sources":["../../../src/domain/project/EmbeddingProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,OAAO,gBAAgB;IACP;IAArB,YAAqB,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;IAAG,CAAC;IAEnD,MAAM,CAAC,WAAW,CAAC,QAAgB,EAAE,MAAoB;QACxD,OAAO,IAAI,gBAAgB,CAAC;YAC3B,QAAQ;YACR,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;SAC3C,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAA2B;QACjC,OAAO,CACN,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YACrC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;YACzC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;YAC3C,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,CACjD,CAAC;IACH,CAAC;IAED,MAAM;QACL,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACxE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;aAC/B,MAAM,CACN,IAAI,CAAC,SAAS,CAAC;YACd,QAAQ;YACR,UAAU,IAAI,IAAI;YAClB,WAAW;YACX,cAAc;SACd,CAAC,CACF;aACA,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,aAAa,IAAI,EAAE,CAAC;IAC5B,CAAC;CACD"}
@@ -1,3 +1,4 @@
1
+ import type { EmbeddingProfileData } from "./EmbeddingProfile.js";
1
2
  /**
2
3
  * What an index records about itself: where it came from and how it was built.
3
4
  *
@@ -14,4 +15,5 @@ export interface IndexMetadata {
14
15
  model?: string;
15
16
  /** Embedding vector dimensions. */
16
17
  dimensions?: number;
18
+ embeddingProfile?: EmbeddingProfileData;
17
19
  }
@@ -1,23 +1,14 @@
1
1
  /**
2
- * A model string in `provider:model` form, the family comparison that decides
3
- * whether two models produce interchangeable embeddings, and the directory
4
- * slug derived from it.
2
+ * A model reference and the historical name-based family and directory slug.
5
3
  *
6
- * Only the family matters: a re-quantized or re-tagged build of the same model
7
- * produces compatible embeddings, and so does the same model served by a
8
- * different runtime, so comparing raw strings would partition on differences
9
- * that do not exist.
10
- *
11
- * The slug is the load-bearing part. Databases are stored per model, so
12
- * {@link toSlug} draws the boundary between them — and it must draw it in
13
- * exactly the same place as {@link isSameFamilyAs}. Two models share a
14
- * database if and only if they are compatible; a slug that split more finely
15
- * would re-embed a corpus for nothing, and one that split more coarsely would
16
- * mix incomparable vectors into one table.
4
+ * Family names remain useful for display, runtime discovery, legacy indexes,
5
+ * and providers without artifact resolution. They are not proof of embedding
6
+ * compatibility. Docker index selection uses a verified EmbeddingProfile
7
+ * instead, including the artifact digest and embedding settings.
17
8
  */
18
9
  export declare class ModelIdentity {
19
10
  private readonly value;
20
- /** Quantization and tag suffixes that do not change the embedding space. */
11
+ /** Variant suffixes ignored by historical name-based lookup. */
21
12
  private static readonly VARIANT_SUFFIX;
22
13
  /** Long enough to stay readable in a path, short enough to stay a path. */
23
14
  private static readonly SLUG_PREFIX_LENGTH;
@@ -35,7 +26,7 @@ export declare class ModelIdentity {
35
26
  * "lmstudio:bge-large-en:fp16" -> "bge-large-en"
36
27
  */
37
28
  get family(): string;
38
- /** Whether two models produce interchangeable embeddings. */
29
+ /** Whether two model references share the historical family name. */
39
30
  isSameFamilyAs(other: ModelIdentity): boolean;
40
31
  /**
41
32
  * Directory name holding this model's embeddings.
@@ -1,24 +1,15 @@
1
1
  import { createHash } from "node:crypto";
2
2
  /**
3
- * A model string in `provider:model` form, the family comparison that decides
4
- * whether two models produce interchangeable embeddings, and the directory
5
- * slug derived from it.
3
+ * A model reference and the historical name-based family and directory slug.
6
4
  *
7
- * Only the family matters: a re-quantized or re-tagged build of the same model
8
- * produces compatible embeddings, and so does the same model served by a
9
- * different runtime, so comparing raw strings would partition on differences
10
- * that do not exist.
11
- *
12
- * The slug is the load-bearing part. Databases are stored per model, so
13
- * {@link toSlug} draws the boundary between them — and it must draw it in
14
- * exactly the same place as {@link isSameFamilyAs}. Two models share a
15
- * database if and only if they are compatible; a slug that split more finely
16
- * would re-embed a corpus for nothing, and one that split more coarsely would
17
- * mix incomparable vectors into one table.
5
+ * Family names remain useful for display, runtime discovery, legacy indexes,
6
+ * and providers without artifact resolution. They are not proof of embedding
7
+ * compatibility. Docker index selection uses a verified EmbeddingProfile
8
+ * instead, including the artifact digest and embedding settings.
18
9
  */
19
10
  export class ModelIdentity {
20
11
  value;
21
- /** Quantization and tag suffixes that do not change the embedding space. */
12
+ /** Variant suffixes ignored by historical name-based lookup. */
22
13
  static VARIANT_SUFFIX = /^(Q\d|q\d|fp\d|f\d|latest|gguf|ggml)/i;
23
14
  /** Long enough to stay readable in a path, short enough to stay a path. */
24
15
  static SLUG_PREFIX_LENGTH = 48;
@@ -56,7 +47,7 @@ export class ModelIdentity {
56
47
  : rest;
57
48
  return family.replace(/^(?:docker\.io\/(?:ai|library)\/|docker\.io\/|huggingface\.co\/)/i, "");
58
49
  }
59
- /** Whether two models produce interchangeable embeddings. */
50
+ /** Whether two model references share the historical family name. */
60
51
  isSameFamilyAs(other) {
61
52
  return this.family === other.family;
62
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ModelIdentity.js","sourceRoot":"","sources":["../../../src/domain/project/ModelIdentity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,aAAa;IASY;IARrC,4EAA4E;IACpE,MAAM,CAAU,cAAc,GACrC,uCAAuC,CAAC;IAEzC,2EAA2E;IACnE,MAAM,CAAU,kBAAkB,GAAG,EAAE,CAAC;IACxC,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAC;IAE7C,YAAqC,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEtD,MAAM,CAAC,EAAE,CAAC,KAAa;QACtB,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,IAAI,QAAQ;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,IAAI,MAAM;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GACX,SAAS,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC;QACT,OAAO,MAAM,CAAC,OAAO,CACpB,mEAAmE,EACnE,EAAE,CACF,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,cAAc,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,UAAmB;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;aAC/B,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;aAC1B,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;aAChC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC"}
1
+ {"version":3,"file":"ModelIdentity.js","sourceRoot":"","sources":["../../../src/domain/project/ModelIdentity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IASY;IARrC,gEAAgE;IACxD,MAAM,CAAU,cAAc,GACrC,uCAAuC,CAAC;IAEzC,2EAA2E;IACnE,MAAM,CAAU,kBAAkB,GAAG,EAAE,CAAC;IACxC,MAAM,CAAU,gBAAgB,GAAG,CAAC,CAAC;IAE7C,YAAqC,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEtD,MAAM,CAAC,EAAE,CAAC,KAAa;QACtB,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,IAAI,QAAQ;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,IAAI,MAAM;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GACX,SAAS,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC;QACT,OAAO,MAAM,CAAC,OAAO,CACpB,mEAAmE,EACnE,EAAE,CACF,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,cAAc,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,UAAmB;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;aAC/B,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;aAC1B,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;aAChC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { GitPort } from "../ports/GitPort.js";
2
+ import type { IndexPathPort } from "../ports/IndexPathPort.js";
2
3
  import type { StateDirectoryPort } from "../ports/StateDirectoryPort.js";
3
4
  import { DatabaseLocation } from "./DatabaseLocation.js";
4
5
  import type { ModelIdentity } from "./ModelIdentity.js";
@@ -41,13 +42,14 @@ export declare class ProjectLocator {
41
42
  private readonly model;
42
43
  /** Configured output width, when the model has a configurable one. */
43
44
  private readonly dimensions?;
45
+ private readonly indexPath?;
44
46
  /** Subdirectory of the git common directory holding every model's index. */
45
47
  private static readonly REPOSITORY_SUBDIRECTORY;
46
48
  constructor(git: GitPort, state: StateDirectoryPort,
47
49
  /** The configured embedding model, which partitions the databases. */
48
50
  model: ModelIdentity,
49
51
  /** Configured output width, when the model has a configurable one. */
50
- dimensions?: number | undefined);
52
+ dimensions?: number | undefined, indexPath?: IndexPathPort | undefined);
51
53
  /**
52
54
  * Identify the project containing `cwd`.
53
55
  *
@@ -33,17 +33,19 @@ export class ProjectLocator {
33
33
  state;
34
34
  model;
35
35
  dimensions;
36
+ indexPath;
36
37
  /** Subdirectory of the git common directory holding every model's index. */
37
38
  static REPOSITORY_SUBDIRECTORY = "lmgrep";
38
39
  constructor(git, state,
39
40
  /** The configured embedding model, which partitions the databases. */
40
41
  model,
41
42
  /** Configured output width, when the model has a configurable one. */
42
- dimensions) {
43
+ dimensions, indexPath) {
43
44
  this.git = git;
44
45
  this.state = state;
45
46
  this.model = model;
46
47
  this.dimensions = dimensions;
48
+ this.indexPath = indexPath;
47
49
  }
48
50
  /**
49
51
  * Identify the project containing `cwd`.
@@ -72,7 +74,8 @@ export class ProjectLocator {
72
74
  }
73
75
  /** Database directory for the project containing `cwd`. */
74
76
  databasePathFor(cwd) {
75
- return join(this.indexHomeFor(cwd), this.modelSlug());
77
+ const home = this.indexHomeFor(cwd);
78
+ return this.indexPath?.resolve(home) ?? join(home, this.modelSlug());
76
79
  }
77
80
  /**
78
81
  * The working tree a repository index belongs to, for display and for the
@@ -124,9 +127,10 @@ export class ProjectLocator {
124
127
  */
125
128
  resolveDatabase(cwd, database) {
126
129
  if (database && database.length > 0) {
130
+ const home = join(this.state.databasesDirectory(), database.replace(/[^a-zA-Z0-9_.-]/g, "_"));
127
131
  const path = this.isPathLike(database)
128
132
  ? resolve(cwd, database)
129
- : join(this.state.databasesDirectory(), database.replace(/[^a-zA-Z0-9_.-]/g, "_"), this.modelSlug());
133
+ : (this.indexPath?.resolve(home) ?? join(home, this.modelSlug()));
130
134
  return new DatabaseLocation(path, Branch.default(), resolve(cwd), true);
131
135
  }
132
136
  const project = this.resolveProject(cwd);