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.
- package/README.md +36 -1
- package/dist/application/LmgrepFactory.d.ts +5 -0
- package/dist/application/LmgrepFactory.js +28 -5
- package/dist/application/LmgrepFactory.js.map +1 -1
- package/dist/application/indexing/IndexBuilder.js +2 -0
- package/dist/application/indexing/IndexBuilder.js.map +1 -1
- package/dist/application/operations/IndexAlternatives.js +7 -0
- package/dist/application/operations/IndexAlternatives.js.map +1 -1
- package/dist/application/search/SearchService.d.ts +3 -1
- package/dist/application/search/SearchService.js +9 -1
- package/dist/application/search/SearchService.js.map +1 -1
- package/dist/domain/ports/IndexPathPort.d.ts +3 -0
- package/dist/domain/ports/IndexPathPort.js +2 -0
- package/dist/domain/ports/IndexPathPort.js.map +1 -0
- package/dist/domain/project/EmbeddingProfile.d.ts +14 -0
- package/dist/domain/project/EmbeddingProfile.js +34 -0
- package/dist/domain/project/EmbeddingProfile.js.map +1 -0
- package/dist/domain/project/IndexMetadata.d.ts +2 -0
- package/dist/domain/project/ModelIdentity.d.ts +7 -16
- package/dist/domain/project/ModelIdentity.js +7 -16
- package/dist/domain/project/ModelIdentity.js.map +1 -1
- package/dist/domain/project/ProjectLocator.d.ts +3 -1
- package/dist/domain/project/ProjectLocator.js +7 -3
- package/dist/domain/project/ProjectLocator.js.map +1 -1
- package/dist/infrastructure/ai/DockerModelIdentityResolver.d.ts +7 -0
- package/dist/infrastructure/ai/DockerModelIdentityResolver.js +55 -0
- package/dist/infrastructure/ai/DockerModelIdentityResolver.js.map +1 -0
- package/dist/infrastructure/fs/IndexableFileRules.js +4 -0
- package/dist/infrastructure/fs/IndexableFileRules.js.map +1 -1
- package/dist/infrastructure/fs/ProjectMetadataStore.js +3 -0
- package/dist/infrastructure/fs/ProjectMetadataStore.js.map +1 -1
- package/dist/infrastructure/fs/VerifiedIndexPath.d.ts +9 -0
- package/dist/infrastructure/fs/VerifiedIndexPath.js +42 -0
- package/dist/infrastructure/fs/VerifiedIndexPath.js.map +1 -0
- package/dist/infrastructure/p2p/IndexShare.js +13 -1
- package/dist/infrastructure/p2p/IndexShare.js.map +1 -1
- package/dist/infrastructure/p2p/SecureChannel.d.ts +2 -0
- package/dist/infrastructure/p2p/SecureChannel.js.map +1 -1
- package/dist/infrastructure/treesitter/LanguageCatalog.js +2 -2
- package/dist/infrastructure/treesitter/LanguageCatalog.js.map +1 -1
- package/dist/presentation/cli/commands/ProjectsCommand.js +3 -1
- package/dist/presentation/cli/commands/ProjectsCommand.js.map +1 -1
- package/dist/presentation/cli/commands/ShareCommands.js +37 -14
- package/dist/presentation/cli/commands/ShareCommands.js.map +1 -1
- 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
|
-
|
|
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 ??
|
|
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":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAuB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAEN,oBAAoB,GACpB,MAAM,kCAAkC,CAAC;AAqB1C;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACzB,KAAK,CAAC,IAAI,CAAC,OAAsB;QAChC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QAErD,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB;YAC5B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,OAAO,CAAC,MAAM;SACjB,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;QAEpE,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,
|
|
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":"
|
|
1
|
+
{"version":3,"file":"SearchService.js","sourceRoot":"","sources":["../../../src/application/search/SearchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
-
/**
|
|
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
|
|
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
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
/**
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
:
|
|
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);
|