lmgrep 0.2.0 → 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 +66 -3
- 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 +12 -24
- 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/ai/DockerModelRunnerProbe.d.ts +16 -0
- package/dist/infrastructure/ai/DockerModelRunnerProbe.js +52 -0
- package/dist/infrastructure/ai/DockerModelRunnerProbe.js.map +1 -0
- package/dist/infrastructure/ai/LocalRuntimeDetector.js +2 -0
- package/dist/infrastructure/ai/LocalRuntimeDetector.js.map +1 -1
- package/dist/infrastructure/ai/OllamaProbe.d.ts +1 -0
- package/dist/infrastructure/ai/OllamaProbe.js +2 -0
- package/dist/infrastructure/ai/OllamaProbe.js.map +1 -1
- package/dist/infrastructure/ai/ProviderModuleLoader.d.ts +4 -3
- package/dist/infrastructure/ai/ProviderModuleLoader.js +10 -3
- package/dist/infrastructure/ai/ProviderModuleLoader.js.map +1 -1
- package/dist/infrastructure/ai/ProviderRegistry.d.ts +1 -0
- package/dist/infrastructure/ai/ProviderRegistry.js +9 -1
- package/dist/infrastructure/ai/ProviderRegistry.js.map +1 -1
- 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/EmbeddedTreeSitterAssets.d.ts +8 -0
- package/dist/infrastructure/treesitter/EmbeddedTreeSitterAssets.js +12 -0
- package/dist/infrastructure/treesitter/EmbeddedTreeSitterAssets.js.map +1 -0
- package/dist/infrastructure/treesitter/LanguageCatalog.js +6 -2
- package/dist/infrastructure/treesitter/LanguageCatalog.js.map +1 -1
- package/dist/infrastructure/treesitter/TreeSitterChunker.js +3 -1
- package/dist/infrastructure/treesitter/TreeSitterChunker.js.map +1 -1
- package/dist/presentation/cli/commands/ConfigCommands.d.ts +1 -0
- package/dist/presentation/cli/commands/ConfigCommands.js +25 -9
- package/dist/presentation/cli/commands/ConfigCommands.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 +11 -2
|
@@ -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);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectLocator.js","sourceRoot":"","sources":["../../../src/domain/project/ProjectLocator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectLocator.js","sourceRoot":"","sources":["../../../src/domain/project/ProjectLocator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LmgrepConfig } from "../../domain/config/LmgrepConfig.js";
|
|
2
|
+
import { EmbeddingProfile } from "../../domain/project/EmbeddingProfile.js";
|
|
3
|
+
export declare class DockerModelIdentityResolver {
|
|
4
|
+
resolve(config: LmgrepConfig): Promise<EmbeddingProfile | undefined>;
|
|
5
|
+
fromCatalog(config: LmgrepConfig, payload: unknown): EmbeddingProfile;
|
|
6
|
+
private normalizeReference;
|
|
7
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { EmbeddingProfile } from "../../domain/project/EmbeddingProfile.js";
|
|
3
|
+
import { DockerModelRunnerProbe } from "./DockerModelRunnerProbe.js";
|
|
4
|
+
const catalogSchema = z.array(z.object({
|
|
5
|
+
id: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
6
|
+
tags: z.array(z.string()).nullish(),
|
|
7
|
+
}));
|
|
8
|
+
export class DockerModelIdentityResolver {
|
|
9
|
+
async resolve(config) {
|
|
10
|
+
if (!config.model.startsWith("docker:"))
|
|
11
|
+
return undefined;
|
|
12
|
+
const model = config.model.slice("docker:".length);
|
|
13
|
+
const baseURL = config.baseURL ?? DockerModelRunnerProbe.BASE_URL;
|
|
14
|
+
const endpoint = new URL(baseURL);
|
|
15
|
+
endpoint.pathname = `${endpoint.pathname.replace(/\/(?:engines(?:\/[^/]+)?)?\/?v1\/?$/, "").replace(/\/$/, "")}/models`;
|
|
16
|
+
endpoint.search = "";
|
|
17
|
+
endpoint.hash = "";
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(endpoint, {
|
|
20
|
+
signal: AbortSignal.timeout(3000),
|
|
21
|
+
});
|
|
22
|
+
if (!response.ok)
|
|
23
|
+
throw new Error(`Model catalog returned HTTP ${response.status}`);
|
|
24
|
+
return this.fromCatalog(config, await response.json());
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw new Error(`Cannot verify Docker model identity for "${model}" at ${endpoint}. ` +
|
|
28
|
+
"Existing indexes were not changed. Ensure Docker Model Runner is reachable and the model is installed.", { cause: error });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
fromCatalog(config, payload) {
|
|
32
|
+
const name = config.model.slice("docker:".length);
|
|
33
|
+
const catalog = catalogSchema.parse(payload);
|
|
34
|
+
const normalized = this.normalizeReference(name);
|
|
35
|
+
const model = catalog.find((entry) => entry.id === name ||
|
|
36
|
+
entry.tags?.some((tag) => this.normalizeReference(tag) === normalized));
|
|
37
|
+
if (!model)
|
|
38
|
+
throw new Error(`Model "${name}" is not in the Docker model catalog`);
|
|
39
|
+
return EmbeddingProfile.forArtifact(`docker:${model.id}`, config);
|
|
40
|
+
}
|
|
41
|
+
normalizeReference(name) {
|
|
42
|
+
if (name.startsWith("sha256:"))
|
|
43
|
+
return name;
|
|
44
|
+
let reference = name;
|
|
45
|
+
if (!reference.includes("/"))
|
|
46
|
+
reference = `docker.io/library/${reference}`;
|
|
47
|
+
else if (!/[.:]/.test(reference.split("/")[0]) &&
|
|
48
|
+
!reference.startsWith("localhost/"))
|
|
49
|
+
reference = `docker.io/${reference}`;
|
|
50
|
+
if (!reference.slice(reference.lastIndexOf("/") + 1).includes(":"))
|
|
51
|
+
reference += ":latest";
|
|
52
|
+
return reference;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=DockerModelIdentityResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerModelIdentityResolver.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/DockerModelIdentityResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DetectedRuntime, RuntimeProbe } from "./ModelRuntime.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detects Docker Model Runner through its OpenAI-compatible API.
|
|
4
|
+
*
|
|
5
|
+
* The model catalog does not expose capabilities, so embedding models are
|
|
6
|
+
* inferred from well-known name fragments. Everything else remains untyped
|
|
7
|
+
* and is only offered as a fallback embedding candidate.
|
|
8
|
+
*/
|
|
9
|
+
export declare class DockerModelRunnerProbe implements RuntimeProbe {
|
|
10
|
+
static readonly BASE_URL = "http://localhost:12434/engines/v1";
|
|
11
|
+
static readonly PROVIDER_PACKAGE = "@ai-sdk/openai-compatible";
|
|
12
|
+
private static readonly TIMEOUT_MS;
|
|
13
|
+
private static readonly EMBEDDING_HINTS;
|
|
14
|
+
detect(): Promise<DetectedRuntime | undefined>;
|
|
15
|
+
private static looksLikeEmbedding;
|
|
16
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects Docker Model Runner through its OpenAI-compatible API.
|
|
3
|
+
*
|
|
4
|
+
* The model catalog does not expose capabilities, so embedding models are
|
|
5
|
+
* inferred from well-known name fragments. Everything else remains untyped
|
|
6
|
+
* and is only offered as a fallback embedding candidate.
|
|
7
|
+
*/
|
|
8
|
+
export class DockerModelRunnerProbe {
|
|
9
|
+
static BASE_URL = "http://localhost:12434/engines/v1";
|
|
10
|
+
static PROVIDER_PACKAGE = "@ai-sdk/openai-compatible";
|
|
11
|
+
static TIMEOUT_MS = 3000;
|
|
12
|
+
static EMBEDDING_HINTS = [
|
|
13
|
+
"embed",
|
|
14
|
+
"nomic",
|
|
15
|
+
"bge",
|
|
16
|
+
"minilm",
|
|
17
|
+
"gte-",
|
|
18
|
+
"e5-",
|
|
19
|
+
];
|
|
20
|
+
async detect() {
|
|
21
|
+
let payload;
|
|
22
|
+
try {
|
|
23
|
+
const response = await fetch(`${DockerModelRunnerProbe.BASE_URL}/models`, {
|
|
24
|
+
signal: AbortSignal.timeout(DockerModelRunnerProbe.TIMEOUT_MS),
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok)
|
|
27
|
+
return undefined;
|
|
28
|
+
payload = (await response.json());
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const models = (payload.data ?? []).map((model) => ({
|
|
34
|
+
id: model.id,
|
|
35
|
+
kind: DockerModelRunnerProbe.looksLikeEmbedding(model.id)
|
|
36
|
+
? "embedding"
|
|
37
|
+
: "unknown",
|
|
38
|
+
}));
|
|
39
|
+
return {
|
|
40
|
+
label: "Docker Model Runner",
|
|
41
|
+
providerId: "docker",
|
|
42
|
+
baseURL: DockerModelRunnerProbe.BASE_URL,
|
|
43
|
+
providerPackage: DockerModelRunnerProbe.PROVIDER_PACKAGE,
|
|
44
|
+
models,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static looksLikeEmbedding(name) {
|
|
48
|
+
const lower = name.toLowerCase();
|
|
49
|
+
return DockerModelRunnerProbe.EMBEDDING_HINTS.some((hint) => lower.includes(hint));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=DockerModelRunnerProbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerModelRunnerProbe.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/DockerModelRunnerProbe.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,OAAO,sBAAsB;IAClC,MAAM,CAAU,QAAQ,GAAG,mCAAmC,CAAC;IAC/D,MAAM,CAAU,gBAAgB,GAAG,2BAA2B,CAAC;IACvD,MAAM,CAAU,UAAU,GAAG,IAAI,CAAC;IAClC,MAAM,CAAU,eAAe,GAAG;QACzC,OAAO;QACP,OAAO;QACP,KAAK;QACL,QAAQ;QACR,MAAM;QACN,KAAK;KACL,CAAC;IAEF,KAAK,CAAC,MAAM;QACX,IAAI,OAAyC,CAAC;QAC9C,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC3B,GAAG,sBAAsB,CAAC,QAAQ,SAAS,EAC3C;gBACC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC;aAC9D,CACD,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAE/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAqB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrE,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS;SACZ,CAAC,CAAC,CAAC;QAEJ,OAAO;YACN,KAAK,EAAE,qBAAqB;YAC5B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ;YACxC,eAAe,EAAE,sBAAsB,CAAC,gBAAgB;YACxD,MAAM;SACN,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CACpB,CAAC;IACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DockerModelRunnerProbe } from "./DockerModelRunnerProbe.js";
|
|
1
2
|
import { LmStudioProbe } from "./LmStudioProbe.js";
|
|
2
3
|
import { OllamaProbe } from "./OllamaProbe.js";
|
|
3
4
|
/**
|
|
@@ -10,6 +11,7 @@ import { OllamaProbe } from "./OllamaProbe.js";
|
|
|
10
11
|
export class LocalRuntimeDetector {
|
|
11
12
|
probes;
|
|
12
13
|
constructor(probes = [
|
|
14
|
+
new DockerModelRunnerProbe(),
|
|
13
15
|
new LmStudioProbe(),
|
|
14
16
|
new OllamaProbe(),
|
|
15
17
|
]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalRuntimeDetector.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/LocalRuntimeDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAEd;IADlB,YACkB,SAAkC;QAClD,IAAI,aAAa,EAAE;QACnB,IAAI,WAAW,EAAE;KACjB;
|
|
1
|
+
{"version":3,"file":"LocalRuntimeDetector.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/LocalRuntimeDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAEd;IADlB,YACkB,SAAkC;QAClD,IAAI,sBAAsB,EAAE;QAC5B,IAAI,aAAa,EAAE;QACnB,IAAI,WAAW,EAAE;KACjB;QAJgB,WAAM,GAAN,MAAM,CAItB;IACC,CAAC;IAEJ,KAAK,CAAC,SAAS;QACd,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CACzD,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,UAAU;QACf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,CACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACrE,KAAK,CAAC,CAAC,CAAC,CACR,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,OAAwB;QAC9C,OAAO,oBAAoB,CAAC,WAAW,CACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CACpD,CAAC;IACH,CAAC;IAED,0EAA0E;IAClE,MAAM,CAAC,WAAW,CAAC,MAAwB;QAClD,OAAO;YACN,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACjC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAClC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,OAAwB;QACzC,OAAO,oBAAoB,CAAC,WAAW,CACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAC/C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,OAAwB;QAC5C,OAAO,oBAAoB,CAAC,WAAW,CACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAClD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -11,6 +11,7 @@ export declare class OllamaProbe implements RuntimeProbe {
|
|
|
11
11
|
/** Models currently resident in memory. */
|
|
12
12
|
private static readonly RUNNING_URL;
|
|
13
13
|
static readonly BASE_URL = "http://localhost:11434/v1";
|
|
14
|
+
static readonly PROVIDER_PACKAGE = "@ai-sdk/openai-compatible";
|
|
14
15
|
private static readonly TIMEOUT_MS;
|
|
15
16
|
/** Name fragments that reliably indicate an embedding model. */
|
|
16
17
|
private static readonly EMBEDDING_HINTS;
|
|
@@ -10,6 +10,7 @@ export class OllamaProbe {
|
|
|
10
10
|
/** Models currently resident in memory. */
|
|
11
11
|
static RUNNING_URL = "http://localhost:11434/api/ps";
|
|
12
12
|
static BASE_URL = "http://localhost:11434/v1";
|
|
13
|
+
static PROVIDER_PACKAGE = "@ai-sdk/openai-compatible";
|
|
13
14
|
static TIMEOUT_MS = 3000;
|
|
14
15
|
/** Name fragments that reliably indicate an embedding model. */
|
|
15
16
|
static EMBEDDING_HINTS = [
|
|
@@ -43,6 +44,7 @@ export class OllamaProbe {
|
|
|
43
44
|
label: "Ollama",
|
|
44
45
|
providerId: "ollama",
|
|
45
46
|
baseURL: OllamaProbe.BASE_URL,
|
|
47
|
+
providerPackage: OllamaProbe.PROVIDER_PACKAGE,
|
|
46
48
|
models,
|
|
47
49
|
};
|
|
48
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OllamaProbe.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/OllamaProbe.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACf,MAAM,CAAU,QAAQ,GAAG,iCAAiC,CAAC;IACrE,2CAA2C;IACnC,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAC;IACtE,MAAM,CAAU,QAAQ,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"OllamaProbe.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/OllamaProbe.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACf,MAAM,CAAU,QAAQ,GAAG,iCAAiC,CAAC;IACrE,2CAA2C;IACnC,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAC;IACtE,MAAM,CAAU,QAAQ,GAAG,2BAA2B,CAAC;IACvD,MAAM,CAAU,gBAAgB,GAAG,2BAA2B,CAAC;IACvD,MAAM,CAAU,UAAU,GAAG,IAAI,CAAC;IAE1C,gEAAgE;IACxD,MAAM,CAAU,eAAe,GAAG;QACzC,OAAO;QACP,OAAO;QACP,KAAK;QACL,QAAQ;QACR,MAAM;QACN,KAAK;KACL,CAAC;IAEF,KAAK,CAAC,MAAM;QACX,IAAI,OAA6C,CAAC;QAClD,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YAC9B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAqB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnE,EAAE,EAAE,CAAC,CAAC,IAAI;YACV,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACtE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC,CAAC;QAEJ,OAAO;YACN,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,WAAW,CAAC,QAAQ;YAC7B,eAAe,EAAE,WAAW,CAAC,gBAAgB;YAC7C,MAAM;SACN,CAAC;IACH,CAAC;IAED,4EAA4E;IACpE,KAAK,CAAC,gBAAgB;QAC7B,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;gBAChD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,GAAG,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAEhC,CAAC;YACF,OAAO,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,GAAG,EAAE,CAAC;QAClB,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Imports an AI SDK provider package.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The OpenAI-compatible adapter is statically bundled so local runtimes work
|
|
5
|
+
* in the standalone executable. Other providers remain plugins: resolution
|
|
6
|
+
* reaches beyond this package's own `node_modules`, allowing a global install.
|
|
7
7
|
*/
|
|
8
8
|
export declare class ProviderModuleLoader {
|
|
9
9
|
private readonly cache;
|
|
10
|
+
private readonly bundled;
|
|
10
11
|
load(packageName: string): Promise<Record<string, unknown>>;
|
|
11
12
|
private resolve;
|
|
12
13
|
private globalModulePaths;
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import * as openAICompatible from "@ai-sdk/openai-compatible";
|
|
4
5
|
/**
|
|
5
6
|
* Imports an AI SDK provider package.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* The OpenAI-compatible adapter is statically bundled so local runtimes work
|
|
9
|
+
* in the standalone executable. Other providers remain plugins: resolution
|
|
10
|
+
* reaches beyond this package's own `node_modules`, allowing a global install.
|
|
10
11
|
*/
|
|
11
12
|
export class ProviderModuleLoader {
|
|
12
13
|
cache = new Map();
|
|
14
|
+
bundled = new Map([
|
|
15
|
+
["@ai-sdk/openai-compatible", openAICompatible],
|
|
16
|
+
]);
|
|
13
17
|
async load(packageName) {
|
|
18
|
+
const bundled = this.bundled.get(packageName);
|
|
19
|
+
if (bundled)
|
|
20
|
+
return bundled;
|
|
14
21
|
const cached = this.cache.get(packageName);
|
|
15
22
|
if (cached)
|
|
16
23
|
return cached;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderModuleLoader.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ProviderModuleLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderModuleLoader.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ProviderModuleLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IACf,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEnD,OAAO,GAAG,IAAI,GAAG,CAAkC;QACnE,CAAC,2BAA2B,EAAE,gBAAgB,CAAC;KAC/C,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,WAAmB;QACxC,4CAA4C;QAC5C,IAAI,CAAC;YACJ,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;gBAC5D,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACX,CAAC;QAED,MAAM,IAAI,KAAK,CACd,aAAa,WAAW,gDAAgD,WAAW,IAAI,CACvF,CAAC;IACH,CAAC;IAEO,iBAAiB;QACxB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnE,IAAI,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACX,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
|
|
@@ -32,6 +32,7 @@ export interface ProviderRequest {
|
|
|
32
32
|
*/
|
|
33
33
|
export declare class ProviderRegistry {
|
|
34
34
|
private readonly loader;
|
|
35
|
+
private static readonly OPENAI_COMPATIBLE_PROVIDERS;
|
|
35
36
|
constructor(loader?: ProviderModuleLoader);
|
|
36
37
|
instantiate(request: ProviderRequest): Promise<unknown>;
|
|
37
38
|
}
|
|
@@ -26,12 +26,20 @@ export class ModelReference {
|
|
|
26
26
|
*/
|
|
27
27
|
export class ProviderRegistry {
|
|
28
28
|
loader;
|
|
29
|
+
static OPENAI_COMPATIBLE_PROVIDERS = new Set([
|
|
30
|
+
"docker",
|
|
31
|
+
"lmstudio",
|
|
32
|
+
"ollama",
|
|
33
|
+
]);
|
|
29
34
|
constructor(loader = new ProviderModuleLoader()) {
|
|
30
35
|
this.loader = loader;
|
|
31
36
|
}
|
|
32
37
|
async instantiate(request) {
|
|
33
38
|
const providerName = request.reference.provider;
|
|
34
|
-
const packageName = request.packageName ??
|
|
39
|
+
const packageName = request.packageName ??
|
|
40
|
+
(ProviderRegistry.OPENAI_COMPATIBLE_PROVIDERS.has(providerName)
|
|
41
|
+
? "@ai-sdk/openai-compatible"
|
|
42
|
+
: `@ai-sdk/${providerName}`);
|
|
35
43
|
const module = await this.loader.load(packageName);
|
|
36
44
|
let instance = module[providerName];
|
|
37
45
|
const forceFactory = request.preferFactoryWhenBaseUrlSet && Boolean(request.baseURL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,sDAAsD;AACtD,MAAM,OAAO,cAAc;IAEhB;IACA;IACA;IAHV,YACU,QAAgB,EAChB,KAAa,EACb,IAAY;QAFZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;IACnB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,KAAa;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,GAAG,KAAK,8CAA8C,KAAK,GAAG,CAC9D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,cAAc,CACxB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EACtB,KAAK,CACL,CAAC;IACH,CAAC;CACD;AAmBD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,sDAAsD;AACtD,MAAM,OAAO,cAAc;IAEhB;IACA;IACA;IAHV,YACU,QAAgB,EAChB,KAAa,EACb,IAAY;QAFZ,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;IACnB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,KAAa;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,GAAG,KAAK,8CAA8C,KAAK,GAAG,CAC9D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,cAAc,CACxB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EACtB,KAAK,CACL,CAAC;IACH,CAAC;CACD;AAmBD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAQV;IAPV,MAAM,CAAU,2BAA2B,GAAG,IAAI,GAAG,CAAC;QAC7D,QAAQ;QACR,UAAU;QACV,QAAQ;KACR,CAAC,CAAC;IAEH,YACkB,SAA+B,IAAI,oBAAoB,EAAE;QAAzD,WAAM,GAAN,MAAM,CAAmD;IACxE,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAwB;QACzC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QAChD,MAAM,WAAW,GAChB,OAAO,CAAC,WAAW;YACnB,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC9D,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAEpC,MAAM,YAAY,GACjB,OAAO,CAAC,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CACtB,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAErB,CAAC;gBACb,QAAQ,GAAG,OAAO,CAAC;oBAClB,IAAI,EAAE,YAAY;oBAClB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,YAAY,WAAW,mCAAmC;gBACzD,cAAc,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/C,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexableFileRules.js","sourceRoot":"","sources":["../../../src/infrastructure/fs/IndexableFileRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,MAAuB,MAAM,QAAQ,CAAC;AAG7C;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"IndexableFileRules.js","sourceRoot":"","sources":["../../../src/infrastructure/fs/IndexableFileRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,9 @@ export class ProjectMetadataStore {
|
|
|
42
42
|
indexedAt: new Date().toISOString(),
|
|
43
43
|
model: existing?.model ?? metadata.model,
|
|
44
44
|
dimensions: existing?.dimensions ?? metadata.dimensions,
|
|
45
|
+
embeddingProfile: existing
|
|
46
|
+
? existing.embeddingProfile
|
|
47
|
+
: metadata.embeddingProfile,
|
|
45
48
|
};
|
|
46
49
|
writeFileSync(join(databasePath, ProjectMetadataStore.FILE), JSON.stringify(merged, null, 2));
|
|
47
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../../src/infrastructure/fs/ProjectMetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAU,IAAI,GAAG,aAAa,CAAC;IAC7C,2DAA2D;IACnD,MAAM,CAAU,OAAO,GAAG,IAAI,GAAG,CAAS;QACjD,oBAAoB,CAAC,IAAI;QACzB,GAAG,SAAS,CAAC,MAAM,QAAQ;QAC3B,GAAG,SAAS,CAAC,KAAK,QAAQ;QAC1B,GAAG,SAAS,CAAC,WAAW,QAAQ;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAoB;QACxB,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAChB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CACnD,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CACJ,YAAoB,EACpB,QAA0C;QAE1C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,MAAM,GAAkB;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK;YACxC,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../../src/infrastructure/fs/ProjectMetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAU,IAAI,GAAG,aAAa,CAAC;IAC7C,2DAA2D;IACnD,MAAM,CAAU,OAAO,GAAG,IAAI,GAAG,CAAS;QACjD,oBAAoB,CAAC,IAAI;QACzB,GAAG,SAAS,CAAC,MAAM,QAAQ;QAC3B,GAAG,SAAS,CAAC,KAAK,QAAQ;QAC1B,GAAG,SAAS,CAAC,WAAW,QAAQ;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAoB;QACxB,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAChB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CACnD,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CACJ,YAAoB,EACpB,QAA0C;QAE1C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,MAAM,GAAkB;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK;YACxC,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU;YACvD,gBAAgB,EAAE,QAAQ;gBACzB,CAAC,CAAC,QAAQ,CAAC,gBAAgB;gBAC3B,CAAC,CAAC,QAAQ,CAAC,gBAAgB;SAC5B,CAAC;QACF,aAAa,CACZ,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/B,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CAAC,YAAoB;QACvC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACJ,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,YAAoB;QAC9B,IAAI,CAAC;YACJ,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IndexMetadataPort } from "../../domain/ports/IndexMetadataPort.js";
|
|
2
|
+
import type { IndexPathPort } from "../../domain/ports/IndexPathPort.js";
|
|
3
|
+
import type { EmbeddingProfile } from "../../domain/project/EmbeddingProfile.js";
|
|
4
|
+
export declare class VerifiedIndexPath implements IndexPathPort {
|
|
5
|
+
private readonly profile;
|
|
6
|
+
private readonly metadata;
|
|
7
|
+
constructor(profile: EmbeddingProfile, metadata: IndexMetadataPort);
|
|
8
|
+
resolve(indexHome: string): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { readdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export class VerifiedIndexPath {
|
|
4
|
+
profile;
|
|
5
|
+
metadata;
|
|
6
|
+
constructor(profile, metadata) {
|
|
7
|
+
this.profile = profile;
|
|
8
|
+
this.metadata = metadata;
|
|
9
|
+
}
|
|
10
|
+
resolve(indexHome) {
|
|
11
|
+
const preferred = join(indexHome, this.profile.toSlug());
|
|
12
|
+
if (this.metadata.holdsIndex(preferred)) {
|
|
13
|
+
const recorded = this.metadata.read(preferred)?.embeddingProfile;
|
|
14
|
+
if (!recorded || !this.profile.equals(recorded)) {
|
|
15
|
+
throw new Error(`Cannot verify embedding settings for index at ${preferred}. Existing index was not changed.`);
|
|
16
|
+
}
|
|
17
|
+
return preferred;
|
|
18
|
+
}
|
|
19
|
+
let entries;
|
|
20
|
+
try {
|
|
21
|
+
entries = readdirSync(indexHome, { withFileTypes: true });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error.code === "ENOENT")
|
|
25
|
+
return preferred;
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
const matches = entries
|
|
29
|
+
.filter((entry) => entry.isDirectory())
|
|
30
|
+
.map((entry) => join(indexHome, entry.name))
|
|
31
|
+
.filter((path) => {
|
|
32
|
+
const recorded = this.metadata.read(path)?.embeddingProfile;
|
|
33
|
+
return recorded && this.profile.equals(recorded);
|
|
34
|
+
})
|
|
35
|
+
.sort();
|
|
36
|
+
if (matches.length > 1) {
|
|
37
|
+
throw new Error(`Multiple verified indexes match this model: ${matches.join(", ")}. Select one explicitly with --in <path>.`);
|
|
38
|
+
}
|
|
39
|
+
return matches[0] ?? preferred;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=VerifiedIndexPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifiedIndexPath.js","sourceRoot":"","sources":["../../../src/infrastructure/fs/VerifiedIndexPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,OAAO,iBAAiB;IAEX;IACA;IAFlB,YACkB,OAAyB,EACzB,QAA2B;QAD3B,YAAO,GAAP,OAAO,CAAkB;QACzB,aAAQ,GAAR,QAAQ,CAAmB;IAC1C,CAAC;IAEJ,OAAO,CAAC,SAAiB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CACd,iDAAiD,SAAS,mCAAmC,CAC7F,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,OAAmC,CAAC;QACxC,IAAI,CAAC;YACJ,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACzE,MAAM,KAAK,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO;aACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;YAC5D,OAAO,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;aACD,IAAI,EAAE,CAAC;QACT,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACd,+CAA+C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAC5G,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAChC,CAAC;CACD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EmbeddingProfile, } from "../../domain/project/EmbeddingProfile.js";
|
|
1
2
|
import { ModelIdentity } from "../../domain/project/ModelIdentity.js";
|
|
2
3
|
import { PeerSwarm } from "./PeerSwarm.js";
|
|
3
4
|
import { SecureChannel, } from "./SecureChannel.js";
|
|
@@ -39,6 +40,7 @@ export class IndexShare {
|
|
|
39
40
|
type: "meta",
|
|
40
41
|
model: metadata?.model,
|
|
41
42
|
dimensions: metadata?.dimensions,
|
|
43
|
+
embeddingProfile: metadata?.embeddingProfile,
|
|
42
44
|
chunkCount,
|
|
43
45
|
branch: metadata?.branch ?? "main",
|
|
44
46
|
remote: metadata?.remote,
|
|
@@ -95,13 +97,13 @@ export class IndexShare {
|
|
|
95
97
|
switch (message.type) {
|
|
96
98
|
case "meta": {
|
|
97
99
|
expected = message.chunkCount;
|
|
100
|
+
this.warnOnModelMismatch(localMetadata, message, options.onWarning);
|
|
98
101
|
options.onMeta?.({
|
|
99
102
|
model: message.model,
|
|
100
103
|
dimensions: message.dimensions,
|
|
101
104
|
chunkCount: message.chunkCount,
|
|
102
105
|
remote: message.remote,
|
|
103
106
|
});
|
|
104
|
-
this.warnOnModelMismatch(localMetadata, message, options.onWarning);
|
|
105
107
|
channel.send(socket, { type: "ready" });
|
|
106
108
|
accepted = true;
|
|
107
109
|
break;
|
|
@@ -144,6 +146,16 @@ export class IndexShare {
|
|
|
144
146
|
});
|
|
145
147
|
}
|
|
146
148
|
warnOnModelMismatch(local, remote, onWarning) {
|
|
149
|
+
if (local?.embeddingProfile || remote.embeddingProfile) {
|
|
150
|
+
if (!local?.embeddingProfile ||
|
|
151
|
+
!remote.embeddingProfile ||
|
|
152
|
+
!new EmbeddingProfile(local.embeddingProfile).equals(remote.embeddingProfile) ||
|
|
153
|
+
(local.dimensions !== undefined &&
|
|
154
|
+
local.dimensions !== remote.dimensions)) {
|
|
155
|
+
throw new Error("Source and destination embedding profiles do not match; import refused.");
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
147
159
|
if (!local?.model || !remote.model)
|
|
148
160
|
return;
|
|
149
161
|
const localFamily = ModelIdentity.of(local.model).family;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexShare.js","sourceRoot":"","sources":["../../../src/infrastructure/p2p/IndexShare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IndexShare.js","sourceRoot":"","sources":["../../../src/infrastructure/p2p/IndexShare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { EmbeddingProfileData } from "../../domain/project/EmbeddingProfile.js";
|
|
1
2
|
/** Messages exchanged during a share. */
|
|
2
3
|
export type ShareMessage = {
|
|
3
4
|
type: "meta";
|
|
4
5
|
model?: string;
|
|
5
6
|
dimensions?: number;
|
|
7
|
+
embeddingProfile?: EmbeddingProfileData;
|
|
6
8
|
chunkCount: number;
|
|
7
9
|
branch: string;
|
|
8
10
|
remote?: string;
|