@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.
Files changed (53) hide show
  1. package/dist/cli/evaluate.d.ts.map +1 -1
  2. package/dist/cli/evaluate.js +4 -1
  3. package/dist/cli/evaluate.js.map +1 -1
  4. package/dist/cli/experiment.d.ts.map +1 -1
  5. package/dist/cli/experiment.js +4 -1
  6. package/dist/cli/experiment.js.map +1 -1
  7. package/dist/cli/file-detect.js +1 -1
  8. package/dist/cli/file-detect.js.map +1 -1
  9. package/dist/cli/init.d.ts.map +1 -1
  10. package/dist/cli/init.js +69 -10
  11. package/dist/cli/init.js.map +1 -1
  12. package/dist/cli/validate.d.ts.map +1 -1
  13. package/dist/cli/validate.js.map +1 -1
  14. package/dist/core/chunk-processor.d.ts +1 -1
  15. package/dist/core/chunk-processor.d.ts.map +1 -1
  16. package/dist/core/chunk-processor.js +3 -1
  17. package/dist/core/chunk-processor.js.map +1 -1
  18. package/dist/core/embedder.d.ts +11 -4
  19. package/dist/core/embedder.d.ts.map +1 -1
  20. package/dist/core/embedder.js +73 -97
  21. package/dist/core/embedder.js.map +1 -1
  22. package/dist/core/embeddings-db.d.ts +20 -0
  23. package/dist/core/embeddings-db.d.ts.map +1 -0
  24. package/dist/core/embeddings-db.js +181 -0
  25. package/dist/core/embeddings-db.js.map +1 -0
  26. package/dist/core/orchestrator.d.ts +1 -0
  27. package/dist/core/orchestrator.d.ts.map +1 -1
  28. package/dist/core/orchestrator.js +34 -14
  29. package/dist/core/orchestrator.js.map +1 -1
  30. package/dist/core/uploader.d.ts +8 -2
  31. package/dist/core/uploader.d.ts.map +1 -1
  32. package/dist/core/uploader.js +41 -30
  33. package/dist/core/uploader.js.map +1 -1
  34. package/dist/core/utils.d.ts +2 -0
  35. package/dist/core/utils.d.ts.map +1 -1
  36. package/dist/core/utils.js +24 -0
  37. package/dist/core/utils.js.map +1 -1
  38. package/dist/eval/runner.d.ts +1 -1
  39. package/dist/eval/runner.d.ts.map +1 -1
  40. package/dist/eval/runner.js +4 -2
  41. package/dist/eval/runner.js.map +1 -1
  42. package/dist/logger/consola-logger.d.ts.map +1 -1
  43. package/dist/logger/consola-logger.js +12 -2
  44. package/dist/logger/consola-logger.js.map +1 -1
  45. package/dist/plugin-registry.d.ts.map +1 -1
  46. package/dist/plugin-registry.js +0 -13
  47. package/dist/plugin-registry.js.map +1 -1
  48. package/dist/progress/progress-bar.d.ts +6 -0
  49. package/dist/progress/progress-bar.d.ts.map +1 -0
  50. package/dist/progress/progress-bar.js +23 -0
  51. package/dist/progress/progress-bar.js.map +1 -0
  52. package/package.json +5 -1
  53. package/schemas/virage.config.schema.json +5 -0
@@ -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(chunksFile, force = false) {
73
- let chunks;
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
- return {
93
- chunksToEmbed: chunks,
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
- const embeddingsFile = chunksFile.replace("chunks", "embeddings");
99
- const { meta, chunks: existingEmbeddings } = await readEmbeddingsFile(embeddingsFile);
100
- // Check if the embedding model or dimensions changed — if so, all cached embeddings
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
- meta.model !== this.provider.model;
109
- const dimensionsChanged = meta.providerDimensions !== this.provider.dimensions;
90
+ existingMeta.model !== this.provider.model;
91
+ const dimensionsChanged = existingMeta.providerDimensions !== this.provider.dimensions;
110
92
  if (modelChanged || dimensionsChanged) {
111
- const prevModel = meta.model ?? "(unknown)";
93
+ const prevModel = existingMeta.model ?? "(unknown)";
112
94
  const curModel = this.provider.model ?? "(unknown)";
113
- const prevDims = meta.providerDimensions;
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
- return {
120
- chunksToEmbed: chunks,
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
- // (sourceFile::commitHash) Set<contentHash> — for file-level fast path
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, existingMeta: meta, isNewEmbeddingSpace };
155
+ return { chunksToEmbed, meta: existingMeta, isNewEmbeddingSpace: false };
182
156
  }
183
- async saveEmbeddings(newEmbeddings, chunksFile, existingMeta, isFirstBatch, forceFirstBatch) {
184
- const embeddingsFile = chunksFile.replace("chunks", "embeddings");
185
- const now = Math.floor(Date.now() / 1000);
186
- const newByHash = new Map();
187
- for (const emb of newEmbeddings) {
188
- const hash = emb.contentHash || chunkContentHash(emb);
189
- newByHash.set(hash, emb);
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
- // When force-clearing (force flag or model mismatch detected), discard existing chunks
192
- // on the first batch; subsequent batches always merge incrementally.
193
- const discardExisting = isFirstBatch && forceFirstBatch;
194
- let keepChunks = [];
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 final = [...keepChunks, ...newEmbeddings];
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
- await this.saveEmbeddings(embedded, chunksFile, existingMeta, i === 0, i === 0 && effectiveForce);
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":"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"}
@@ -16,6 +16,7 @@ export interface RAGPipelineConfig {
16
16
  maxBatchChars?: number;
17
17
  retry?: RetryOptions;
18
18
  concurrency?: number;
19
+ minIngestionBatchSize?: number;
19
20
  telemetry?: boolean;
20
21
  notifications?: {
21
22
  webhookUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAKA,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;AAI1C,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,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;AAyCD,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;CAyL3B"}
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"}