@vivantel/virage-core 0.2.2 → 0.2.4
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/dist/cli/evaluate.d.ts.map +1 -1
- package/dist/cli/evaluate.js +4 -1
- package/dist/cli/evaluate.js.map +1 -1
- package/dist/cli/experiment.d.ts.map +1 -1
- package/dist/cli/experiment.js +4 -1
- package/dist/cli/experiment.js.map +1 -1
- package/dist/cli/file-detect.js +1 -1
- package/dist/cli/file-detect.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +69 -10
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js.map +1 -1
- package/dist/core/chunk-processor.d.ts +1 -1
- package/dist/core/chunk-processor.d.ts.map +1 -1
- package/dist/core/chunk-processor.js +3 -1
- package/dist/core/chunk-processor.js.map +1 -1
- package/dist/core/embedder.d.ts +11 -4
- package/dist/core/embedder.d.ts.map +1 -1
- package/dist/core/embedder.js +73 -97
- package/dist/core/embedder.js.map +1 -1
- package/dist/core/embeddings-db.d.ts +20 -0
- package/dist/core/embeddings-db.d.ts.map +1 -0
- package/dist/core/embeddings-db.js +181 -0
- package/dist/core/embeddings-db.js.map +1 -0
- package/dist/core/orchestrator.d.ts +1 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +34 -14
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/uploader.d.ts +8 -2
- package/dist/core/uploader.d.ts.map +1 -1
- package/dist/core/uploader.js +41 -30
- package/dist/core/uploader.js.map +1 -1
- package/dist/core/utils.d.ts +2 -0
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +24 -0
- package/dist/core/utils.js.map +1 -1
- package/dist/eval/runner.d.ts +1 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +4 -2
- package/dist/eval/runner.js.map +1 -1
- package/dist/logger/consola-logger.d.ts.map +1 -1
- package/dist/logger/consola-logger.js +12 -2
- package/dist/logger/consola-logger.js.map +1 -1
- package/dist/plugin-registry.d.ts.map +1 -1
- package/dist/plugin-registry.js +0 -13
- package/dist/plugin-registry.js.map +1 -1
- package/dist/progress/progress-bar.d.ts +6 -0
- package/dist/progress/progress-bar.d.ts.map +1 -0
- package/dist/progress/progress-bar.js +23 -0
- package/dist/progress/progress-bar.js.map +1 -0
- package/package.json +5 -1
- package/schemas/virage.config.schema.json +5 -0
package/dist/core/embedder.js
CHANGED
|
@@ -2,8 +2,7 @@ import { NullLogger } from "../logger/null-logger.js";
|
|
|
2
2
|
import { readFile } from "fs/promises";
|
|
3
3
|
import { createHash } from "crypto";
|
|
4
4
|
import { EmbedError } from "./errors.js";
|
|
5
|
-
import { sleep, withRetry, withConcurrency, batchBySize, } from "./utils.js";
|
|
6
|
-
import { readEmbeddingsFile, writeEmbeddingsFile } from "./embeddings-io.js";
|
|
5
|
+
import { sleep, withRetry, withConcurrency, batchBySize, defaultIsRetryable, } from "./utils.js";
|
|
7
6
|
function chunkContentHash(chunk) {
|
|
8
7
|
if (chunk.contentHash)
|
|
9
8
|
return chunk.contentHash;
|
|
@@ -17,7 +16,10 @@ export class EmbedderProcessor {
|
|
|
17
16
|
retryOptions;
|
|
18
17
|
concurrency;
|
|
19
18
|
vectorStoreName;
|
|
19
|
+
saveIntervalMs;
|
|
20
|
+
minIngestionBatchSize;
|
|
20
21
|
logger;
|
|
22
|
+
onProgress;
|
|
21
23
|
constructor(provider, options = {}) {
|
|
22
24
|
this.provider = provider;
|
|
23
25
|
this.rateLimitMs = options.rateLimitMs ?? 500;
|
|
@@ -26,10 +28,13 @@ export class EmbedderProcessor {
|
|
|
26
28
|
this.retryOptions = options.retry ?? {};
|
|
27
29
|
this.concurrency = options.concurrency ?? 1;
|
|
28
30
|
this.vectorStoreName = options.vectorStoreName;
|
|
31
|
+
this.saveIntervalMs = options.saveIntervalMs ?? 30_000;
|
|
32
|
+
this.minIngestionBatchSize = options.minIngestionBatchSize ?? Infinity;
|
|
33
|
+
this.onProgress = options.onProgress;
|
|
29
34
|
this.logger = (options.logger ?? new NullLogger()).withTag("embedder");
|
|
30
35
|
}
|
|
31
36
|
async embedChunk(chunk) {
|
|
32
|
-
const embedding = await withRetry(() => this.provider.embed(chunk.content), this.retryOptions, this.logger);
|
|
37
|
+
const embedding = await withRetry(() => this.provider.embed(chunk.content), { ...this.retryOptions, isRetryable: defaultIsRetryable }, this.logger);
|
|
33
38
|
return {
|
|
34
39
|
...chunk,
|
|
35
40
|
embedding,
|
|
@@ -39,7 +44,7 @@ export class EmbedderProcessor {
|
|
|
39
44
|
async embedBatch(chunks) {
|
|
40
45
|
if (this.provider.embedBatch && chunks.length > 0) {
|
|
41
46
|
const texts = chunks.map((c) => c.content);
|
|
42
|
-
const embeddings = await withRetry(() => this.provider.embedBatch(texts), this.retryOptions, this.logger);
|
|
47
|
+
const embeddings = await withRetry(() => this.provider.embedBatch(texts), { ...this.retryOptions, isRetryable: defaultIsRetryable }, this.logger);
|
|
43
48
|
if (embeddings.length !== chunks.length) {
|
|
44
49
|
throw new EmbedError(`embedBatch returned ${embeddings.length} embeddings for ${chunks.length} chunks`, {
|
|
45
50
|
suggestion: "Check that your EmbeddingProvider.embedBatch() returns one vector per input text.",
|
|
@@ -69,63 +74,36 @@ export class EmbedderProcessor {
|
|
|
69
74
|
});
|
|
70
75
|
return withConcurrency(tasks, this.concurrency);
|
|
71
76
|
}
|
|
72
|
-
async getChunksToEmbed(
|
|
73
|
-
|
|
74
|
-
try {
|
|
75
|
-
const content = await readFile(chunksFile, "utf-8");
|
|
76
|
-
const parsed = JSON.parse(content);
|
|
77
|
-
if (!Array.isArray(parsed)) {
|
|
78
|
-
throw new Error("chunks file does not contain a JSON array");
|
|
79
|
-
}
|
|
80
|
-
chunks = parsed;
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
throw new EmbedError(`Failed to load chunks from ${chunksFile}: ${err instanceof Error ? err.message : String(err)}`, {
|
|
84
|
-
suggestion: "Run the pipeline without --skip-upload to regenerate chunks first.",
|
|
85
|
-
cause: err,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
this.logger.info(`📖 Loaded ${chunks.length} chunks from ${chunksFile}`);
|
|
77
|
+
async getChunksToEmbed(db, chunks, force = false) {
|
|
78
|
+
this.logger.info(`📖 Loaded ${chunks.length} chunks`);
|
|
89
79
|
this.logger.debug(`Provider: ${this.provider.name}, model: ${this.provider.model ?? "(none)"}, dims: ${this.provider.dimensions}`);
|
|
80
|
+
const existingMeta = db.getMeta();
|
|
90
81
|
if (force) {
|
|
91
|
-
this.logger.verbose("Force mode: embedding all chunks");
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
existingMeta: null,
|
|
95
|
-
isNewEmbeddingSpace: true,
|
|
96
|
-
};
|
|
82
|
+
this.logger.verbose("Force mode: clearing db and embedding all chunks");
|
|
83
|
+
db.clearAll();
|
|
84
|
+
return { chunksToEmbed: chunks, meta: null, isNewEmbeddingSpace: true };
|
|
97
85
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// are invalid for the new model's vector space.
|
|
102
|
-
// Discriminators: model + dimensions. providerName is informational only (the same
|
|
103
|
-
// model served via OpenAI, Azure, or GitHub Models produces identical vectors).
|
|
104
|
-
const isNewEmbeddingSpace = false;
|
|
105
|
-
if (meta && existingEmbeddings.length > 0) {
|
|
106
|
-
const modelChanged = meta.model !== undefined &&
|
|
86
|
+
// Check if the embedding model or dimensions changed
|
|
87
|
+
if (existingMeta) {
|
|
88
|
+
const modelChanged = existingMeta.model !== undefined &&
|
|
107
89
|
this.provider.model !== undefined &&
|
|
108
|
-
|
|
109
|
-
const dimensionsChanged =
|
|
90
|
+
existingMeta.model !== this.provider.model;
|
|
91
|
+
const dimensionsChanged = existingMeta.providerDimensions !== this.provider.dimensions;
|
|
110
92
|
if (modelChanged || dimensionsChanged) {
|
|
111
|
-
const prevModel =
|
|
93
|
+
const prevModel = existingMeta.model ?? "(unknown)";
|
|
112
94
|
const curModel = this.provider.model ?? "(unknown)";
|
|
113
|
-
const prevDims =
|
|
95
|
+
const prevDims = existingMeta.providerDimensions;
|
|
114
96
|
const curDims = this.provider.dimensions;
|
|
115
97
|
this.logger.warn(`⚠️ Embedding model changed!`);
|
|
116
98
|
this.logger.warn(` Previous: ${prevModel} (${prevDims}d)`);
|
|
117
99
|
this.logger.warn(` Current: ${curModel} (${curDims}d)`);
|
|
118
100
|
this.logger.warn(` Discarding existing embeddings — all chunks will be re-embedded.`);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
existingMeta: null,
|
|
122
|
-
isNewEmbeddingSpace: true,
|
|
123
|
-
};
|
|
101
|
+
db.clearAll();
|
|
102
|
+
return { chunksToEmbed: chunks, meta: null, isNewEmbeddingSpace: true };
|
|
124
103
|
}
|
|
125
104
|
}
|
|
126
|
-
// Two-level index:
|
|
127
|
-
|
|
128
|
-
// contentHash (global) — for per-chunk fallback
|
|
105
|
+
// Two-level index: (sourceFile::commitHash) → Set<contentHash> and global contentHash set
|
|
106
|
+
const existingEmbeddings = db.getAll();
|
|
129
107
|
const embeddedFileVersions = new Map();
|
|
130
108
|
const embeddedByContentHash = new Set();
|
|
131
109
|
for (const emb of existingEmbeddings) {
|
|
@@ -142,7 +120,6 @@ export class EmbedderProcessor {
|
|
|
142
120
|
}
|
|
143
121
|
this.logger.verbose(`📊 Existing: ${existingEmbeddings.length} chunks across ${embeddedFileVersions.size} version(s)`);
|
|
144
122
|
this.logger.debug(`Vector store: ${this.vectorStoreName ?? "(none)"}`);
|
|
145
|
-
// Group incoming chunks by (sourceFile, commitHash)
|
|
146
123
|
const chunksByFileVersion = new Map();
|
|
147
124
|
for (const chunk of chunks) {
|
|
148
125
|
const key = `${chunk.sourceFile}::${chunk.commitHash}`;
|
|
@@ -159,7 +136,6 @@ export class EmbedderProcessor {
|
|
|
159
136
|
let skippedChunks = 0;
|
|
160
137
|
for (const [key, fileChunks] of chunksByFileVersion) {
|
|
161
138
|
const fileVersionHashes = embeddedFileVersions.get(key);
|
|
162
|
-
// Fast path: every chunk for this (sourceFile, commitHash) is already embedded
|
|
163
139
|
if (fileVersionHashes &&
|
|
164
140
|
fileVersionHashes.size === fileChunks.length &&
|
|
165
141
|
fileChunks.every((c) => fileVersionHashes.has(chunkContentHash(c)))) {
|
|
@@ -167,8 +143,6 @@ export class EmbedderProcessor {
|
|
|
167
143
|
skippedChunks += fileChunks.length;
|
|
168
144
|
continue;
|
|
169
145
|
}
|
|
170
|
-
// Per-chunk fallback: check globally by contentHash (handles partial embeddings
|
|
171
|
-
// from interrupted runs, or content-identical chunks at a different commit)
|
|
172
146
|
for (const chunk of fileChunks) {
|
|
173
147
|
if (!embeddedByContentHash.has(chunkContentHash(chunk))) {
|
|
174
148
|
chunksToEmbed.push(chunk);
|
|
@@ -178,67 +152,69 @@ export class EmbedderProcessor {
|
|
|
178
152
|
if (skippedFiles > 0) {
|
|
179
153
|
this.logger.verbose(`⏭️ Skipped ${skippedFiles} unchanged version(s) (${skippedChunks} chunks)`);
|
|
180
154
|
}
|
|
181
|
-
return { chunksToEmbed,
|
|
155
|
+
return { chunksToEmbed, meta: existingMeta, isNewEmbeddingSpace: false };
|
|
182
156
|
}
|
|
183
|
-
async saveEmbeddings(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
157
|
+
async saveEmbeddings(db, newEmbeddings, meta) {
|
|
158
|
+
db.setMeta(meta);
|
|
159
|
+
db.insert(newEmbeddings);
|
|
160
|
+
this.logger.verbose(`Saved ${newEmbeddings.length} new embeddings to db`);
|
|
161
|
+
}
|
|
162
|
+
async run(db, chunksFile, force = false, onIntermediateBatch) {
|
|
163
|
+
this.logger.info("🔢 Starting incremental embedding generation...");
|
|
164
|
+
let chunks;
|
|
165
|
+
try {
|
|
166
|
+
const content = await readFile(chunksFile, "utf-8");
|
|
167
|
+
const parsed = JSON.parse(content);
|
|
168
|
+
if (!Array.isArray(parsed)) {
|
|
169
|
+
throw new Error("chunks file does not contain a JSON array");
|
|
170
|
+
}
|
|
171
|
+
chunks = parsed;
|
|
190
172
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
let createdAt = now;
|
|
196
|
-
if (!discardExisting) {
|
|
197
|
-
const { meta, chunks: existing } = await readEmbeddingsFile(embeddingsFile);
|
|
198
|
-
if (meta)
|
|
199
|
-
createdAt = meta.createdAt;
|
|
200
|
-
keepChunks = existing.filter((e) => {
|
|
201
|
-
const hash = e.contentHash || chunkContentHash(e);
|
|
202
|
-
return !newByHash.has(hash);
|
|
173
|
+
catch (err) {
|
|
174
|
+
throw new EmbedError(`Failed to load chunks from ${chunksFile}: ${err instanceof Error ? err.message : String(err)}`, {
|
|
175
|
+
suggestion: "Run the pipeline without --skip-upload to regenerate chunks first.",
|
|
176
|
+
cause: err,
|
|
203
177
|
});
|
|
204
178
|
}
|
|
205
|
-
const
|
|
206
|
-
const meta = {
|
|
207
|
-
schemaVersion: 1,
|
|
208
|
-
providerName: this.provider.name,
|
|
209
|
-
providerDimensions: this.provider.dimensions,
|
|
210
|
-
...(this.provider.model !== undefined
|
|
211
|
-
? { model: this.provider.model }
|
|
212
|
-
: {}),
|
|
213
|
-
...(this.vectorStoreName !== undefined
|
|
214
|
-
? { vectorStoreName: this.vectorStoreName }
|
|
215
|
-
: {}),
|
|
216
|
-
// Preserve createdAt from the existing meta when available and not overwriting
|
|
217
|
-
createdAt: existingMeta && !discardExisting ? existingMeta.createdAt : createdAt,
|
|
218
|
-
updatedAt: now,
|
|
219
|
-
};
|
|
220
|
-
await writeEmbeddingsFile(embeddingsFile, meta, final);
|
|
221
|
-
this.logger.verbose(`Saved ${final.length} embeddings to ${embeddingsFile}`);
|
|
222
|
-
this.logger.verbose(` New: ${newEmbeddings.length}, Existing: ${keepChunks.length}`);
|
|
223
|
-
}
|
|
224
|
-
async run(chunksFile, force = false) {
|
|
225
|
-
this.logger.info("🔢 Starting incremental embedding generation...");
|
|
226
|
-
const { chunksToEmbed, existingMeta, isNewEmbeddingSpace } = await this.getChunksToEmbed(chunksFile, force);
|
|
227
|
-
// Treat a model-space change the same as --force for the save step
|
|
228
|
-
const effectiveForce = force || isNewEmbeddingSpace;
|
|
179
|
+
const { chunksToEmbed, meta: existingMeta } = await this.getChunksToEmbed(db, chunks, force);
|
|
229
180
|
if (chunksToEmbed.length === 0) {
|
|
230
181
|
this.logger.info("✨ No chunks need embedding.");
|
|
231
182
|
return [];
|
|
232
183
|
}
|
|
233
184
|
this.logger.info(`📝 Need to embed ${chunksToEmbed.length} chunks`);
|
|
185
|
+
const now = Math.floor(Date.now() / 1000);
|
|
234
186
|
const batches = batchBySize(chunksToEmbed, this.batchSize, (c) => c.content.length, this.maxBatchChars);
|
|
235
187
|
const newEmbeddings = [];
|
|
188
|
+
let lastSaveTime = Date.now();
|
|
236
189
|
for (let i = 0; i < batches.length; i++) {
|
|
237
190
|
const totalChars = batches[i].reduce((s, c) => s + c.content.length, 0);
|
|
238
191
|
this.logger.debug(`Batch ${i + 1}/${batches.length}: ${batches[i].length} chunks, ~${totalChars} chars`);
|
|
239
192
|
const embedded = await this.embedBatch(batches[i]);
|
|
240
193
|
newEmbeddings.push(...embedded);
|
|
241
|
-
|
|
194
|
+
this.onProgress?.(newEmbeddings.length, chunksToEmbed.length);
|
|
195
|
+
const isLastBatch = i === batches.length - 1;
|
|
196
|
+
const elapsed = Date.now() - lastSaveTime;
|
|
197
|
+
if (isLastBatch || elapsed >= this.saveIntervalMs) {
|
|
198
|
+
const meta = {
|
|
199
|
+
schemaVersion: 1,
|
|
200
|
+
providerName: this.provider.name,
|
|
201
|
+
providerDimensions: this.provider.dimensions,
|
|
202
|
+
...(this.provider.model !== undefined
|
|
203
|
+
? { model: this.provider.model }
|
|
204
|
+
: {}),
|
|
205
|
+
...(this.vectorStoreName !== undefined
|
|
206
|
+
? { vectorStoreName: this.vectorStoreName }
|
|
207
|
+
: {}),
|
|
208
|
+
createdAt: existingMeta?.createdAt ?? now,
|
|
209
|
+
updatedAt: now,
|
|
210
|
+
};
|
|
211
|
+
await this.saveEmbeddings(db, embedded, meta);
|
|
212
|
+
lastSaveTime = Date.now();
|
|
213
|
+
if (onIntermediateBatch &&
|
|
214
|
+
db.pendingCount() >= this.minIngestionBatchSize) {
|
|
215
|
+
await onIntermediateBatch();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
242
218
|
}
|
|
243
219
|
return newEmbeddings;
|
|
244
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/core/embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { EmbeddedChunk, EmbeddingsMeta } from "../interfaces/index.js";
|
|
2
|
+
export declare class EmbeddingsDb {
|
|
3
|
+
private db;
|
|
4
|
+
constructor(dbPath: string);
|
|
5
|
+
private isEmpty;
|
|
6
|
+
getMeta(): EmbeddingsMeta | null;
|
|
7
|
+
setMeta(meta: EmbeddingsMeta): void;
|
|
8
|
+
insert(chunks: EmbeddedChunk[]): void;
|
|
9
|
+
has(contentHash: string): boolean;
|
|
10
|
+
getAll(): EmbeddedChunk[];
|
|
11
|
+
getPending(): EmbeddedChunk[];
|
|
12
|
+
markUploaded(contentHashes: string[]): void;
|
|
13
|
+
pendingCount(): number;
|
|
14
|
+
clearAll(): void;
|
|
15
|
+
pruneUploaded(): void;
|
|
16
|
+
migrateFromJson(jsonPath: string): void;
|
|
17
|
+
close(): void;
|
|
18
|
+
private rows;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=embeddings-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings-db.d.ts","sourceRoot":"","sources":["../../src/core/embeddings-db.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA2B5E,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAW1B,OAAO,CAAC,OAAO;IAOf,OAAO,IAAI,cAAc,GAAG,IAAI;IAYhC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMnC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAsBrC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAOjC,MAAM,IAAI,aAAa,EAAE;IAIzB,UAAU,IAAI,aAAa,EAAE;IAI7B,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAU3C,YAAY,IAAI,MAAM;IAOtB,QAAQ,IAAI,IAAI;IAKhB,aAAa,IAAI,IAAI;IAIrB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAyDvC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,IAAI;CAkCb"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { createHash } from "crypto";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
|
+
import { rename } from "fs/promises";
|
|
4
|
+
import Database from "better-sqlite3";
|
|
5
|
+
function chunkContentHash(chunk) {
|
|
6
|
+
return (chunk.contentHash ??
|
|
7
|
+
createHash("sha256").update(chunk.content).digest("hex").slice(0, 16));
|
|
8
|
+
}
|
|
9
|
+
const SCHEMA = `
|
|
10
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
11
|
+
key TEXT PRIMARY KEY,
|
|
12
|
+
value TEXT NOT NULL
|
|
13
|
+
);
|
|
14
|
+
CREATE TABLE IF NOT EXISTS embeddings (
|
|
15
|
+
content_hash TEXT PRIMARY KEY,
|
|
16
|
+
source_file TEXT NOT NULL,
|
|
17
|
+
commit_hash TEXT NOT NULL,
|
|
18
|
+
content TEXT NOT NULL,
|
|
19
|
+
metadata_json TEXT NOT NULL,
|
|
20
|
+
embedding_json TEXT NOT NULL,
|
|
21
|
+
embedded_at INTEGER NOT NULL,
|
|
22
|
+
uploaded INTEGER NOT NULL DEFAULT 0
|
|
23
|
+
);
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_source_file ON embeddings(source_file);
|
|
25
|
+
`;
|
|
26
|
+
export class EmbeddingsDb {
|
|
27
|
+
db;
|
|
28
|
+
constructor(dbPath) {
|
|
29
|
+
this.db = new Database(dbPath);
|
|
30
|
+
this.db.pragma("journal_mode = WAL");
|
|
31
|
+
this.db.exec(SCHEMA);
|
|
32
|
+
const jsonPath = dbPath.replace(/\.db$/, ".json");
|
|
33
|
+
if (this.isEmpty() && existsSync(jsonPath)) {
|
|
34
|
+
this.migrateFromJson(jsonPath);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
isEmpty() {
|
|
38
|
+
const row = this.db
|
|
39
|
+
.prepare("SELECT COUNT(*) as cnt FROM embeddings")
|
|
40
|
+
.get();
|
|
41
|
+
return row.cnt === 0;
|
|
42
|
+
}
|
|
43
|
+
getMeta() {
|
|
44
|
+
const row = this.db
|
|
45
|
+
.prepare("SELECT value FROM meta WHERE key = 'meta'")
|
|
46
|
+
.get();
|
|
47
|
+
if (!row)
|
|
48
|
+
return null;
|
|
49
|
+
try {
|
|
50
|
+
return JSON.parse(row.value);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
setMeta(meta) {
|
|
57
|
+
this.db
|
|
58
|
+
.prepare("INSERT OR REPLACE INTO meta (key, value) VALUES ('meta', ?)")
|
|
59
|
+
.run(JSON.stringify(meta));
|
|
60
|
+
}
|
|
61
|
+
insert(chunks) {
|
|
62
|
+
const stmt = this.db.prepare(`
|
|
63
|
+
INSERT OR IGNORE INTO embeddings
|
|
64
|
+
(content_hash, source_file, commit_hash, content, metadata_json, embedding_json, embedded_at, uploaded)
|
|
65
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 0)
|
|
66
|
+
`);
|
|
67
|
+
const insertMany = this.db.transaction((items) => {
|
|
68
|
+
for (const chunk of items) {
|
|
69
|
+
stmt.run(chunkContentHash(chunk), chunk.sourceFile, chunk.commitHash, chunk.content, JSON.stringify(chunk.metadata), JSON.stringify(chunk.embedding), chunk.embeddedAt);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
insertMany(chunks);
|
|
73
|
+
}
|
|
74
|
+
has(contentHash) {
|
|
75
|
+
const row = this.db
|
|
76
|
+
.prepare("SELECT 1 FROM embeddings WHERE content_hash = ?")
|
|
77
|
+
.get(contentHash);
|
|
78
|
+
return row !== undefined;
|
|
79
|
+
}
|
|
80
|
+
getAll() {
|
|
81
|
+
return this.rows("SELECT * FROM embeddings");
|
|
82
|
+
}
|
|
83
|
+
getPending() {
|
|
84
|
+
return this.rows("SELECT * FROM embeddings WHERE uploaded = 0");
|
|
85
|
+
}
|
|
86
|
+
markUploaded(contentHashes) {
|
|
87
|
+
if (contentHashes.length === 0)
|
|
88
|
+
return;
|
|
89
|
+
const placeholders = contentHashes.map(() => "?").join(", ");
|
|
90
|
+
this.db
|
|
91
|
+
.prepare(`UPDATE embeddings SET uploaded = 1 WHERE content_hash IN (${placeholders})`)
|
|
92
|
+
.run(...contentHashes);
|
|
93
|
+
}
|
|
94
|
+
pendingCount() {
|
|
95
|
+
const row = this.db
|
|
96
|
+
.prepare("SELECT COUNT(*) as cnt FROM embeddings WHERE uploaded = 0")
|
|
97
|
+
.get();
|
|
98
|
+
return row.cnt;
|
|
99
|
+
}
|
|
100
|
+
clearAll() {
|
|
101
|
+
this.db.prepare("DELETE FROM embeddings").run();
|
|
102
|
+
this.db.prepare("DELETE FROM meta").run();
|
|
103
|
+
}
|
|
104
|
+
pruneUploaded() {
|
|
105
|
+
this.db.prepare("DELETE FROM embeddings WHERE uploaded = 1").run();
|
|
106
|
+
}
|
|
107
|
+
migrateFromJson(jsonPath) {
|
|
108
|
+
let raw;
|
|
109
|
+
try {
|
|
110
|
+
raw = readFileSync(jsonPath, "utf-8");
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
let parsed;
|
|
116
|
+
try {
|
|
117
|
+
parsed = JSON.parse(raw);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
let chunks;
|
|
123
|
+
let meta = null;
|
|
124
|
+
if (Array.isArray(parsed)) {
|
|
125
|
+
chunks = parsed;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const file = parsed;
|
|
129
|
+
chunks = file.chunks ?? [];
|
|
130
|
+
meta = file._meta ?? null;
|
|
131
|
+
}
|
|
132
|
+
if (meta)
|
|
133
|
+
this.setMeta(meta);
|
|
134
|
+
if (chunks.length > 0) {
|
|
135
|
+
// Mark migrated chunks as uploaded since they were previously written to JSON
|
|
136
|
+
// (implying they were already synced to the vector store)
|
|
137
|
+
const stmt = this.db.prepare(`
|
|
138
|
+
INSERT OR IGNORE INTO embeddings
|
|
139
|
+
(content_hash, source_file, commit_hash, content, metadata_json, embedding_json, embedded_at, uploaded)
|
|
140
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 1)
|
|
141
|
+
`);
|
|
142
|
+
const insertAll = this.db.transaction((items) => {
|
|
143
|
+
for (const chunk of items) {
|
|
144
|
+
stmt.run(chunkContentHash(chunk), chunk.sourceFile, chunk.commitHash, chunk.content, JSON.stringify(chunk.metadata), JSON.stringify(chunk.embedding), chunk.embeddedAt);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
insertAll(chunks);
|
|
148
|
+
}
|
|
149
|
+
rename(jsonPath, jsonPath + ".migrated").catch(() => { });
|
|
150
|
+
}
|
|
151
|
+
close() {
|
|
152
|
+
this.db.close();
|
|
153
|
+
}
|
|
154
|
+
rows(sql) {
|
|
155
|
+
const rows = this.db.prepare(sql).all();
|
|
156
|
+
return rows.map((row) => ({
|
|
157
|
+
contentHash: row.content_hash,
|
|
158
|
+
sourceFile: row.source_file,
|
|
159
|
+
commitHash: row.commit_hash,
|
|
160
|
+
content: row.content,
|
|
161
|
+
metadata: (() => {
|
|
162
|
+
try {
|
|
163
|
+
return JSON.parse(row.metadata_json);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return {};
|
|
167
|
+
}
|
|
168
|
+
})(),
|
|
169
|
+
embedding: (() => {
|
|
170
|
+
try {
|
|
171
|
+
return JSON.parse(row.embedding_json);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
})(),
|
|
177
|
+
embeddedAt: row.embedded_at,
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=embeddings-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings-db.js","sourceRoot":"","sources":["../../src/core/embeddings-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,OAAO,CACL,KAAK,CAAC,WAAW;QACjB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;CAgBd,CAAC;AAEF,MAAM,OAAO,YAAY;IACf,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,wCAAwC,CAAC;aACjD,GAAG,EAAqB,CAAC;QAC5B,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,2CAA2C,CAAC;aACpD,GAAG,EAAmC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAmB,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,6DAA6D,CAAC;aACtE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAuB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAsB,EAAE,EAAE;YAChE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CACN,gBAAgB,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,OAAO,EACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAC/B,KAAK,CAAC,UAAU,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,WAAmB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,iDAAiD,CAAC;aAC1D,GAAG,CAAC,WAAW,CAAC,CAAC;QACpB,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,aAAuB;QAClC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACvC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE;aACJ,OAAO,CACN,6DAA6D,YAAY,GAAG,CAC7E;aACA,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,2DAA2D,CAAC;aACpE,GAAG,EAAqB,CAAC;QAC5B,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,EAAE,CAAC;IACrE,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,MAAuB,CAAC;QAC5B,IAAI,IAAI,GAA0B,IAAI,CAAC;QAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,MAAyB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAGZ,CAAC;YACF,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,8EAA8E;YAC9E,0DAA0D;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAI5B,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAsB,EAAE,EAAE;gBAC/D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC1B,IAAI,CAAC,GAAG,CACN,gBAAgB,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,OAAO,EACb,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAC/B,KAAK,CAAC,UAAU,CACjB,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAEO,IAAI,CAAC,GAAW;QAWtB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAA4B,CAAC;gBAClE,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE;YACJ,SAAS,EAAE,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAa,CAAC;gBACpD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE;YACJ,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAsCD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,iBAAiB;IAO/B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4M3B"}
|