ghagga-core 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/embed.d.ts +140 -0
  2. package/dist/embed.d.ts.map +1 -1
  3. package/dist/embed.js +288 -0
  4. package/dist/embed.js.map +1 -1
  5. package/dist/index.d.ts +4 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/memory/backfill.d.ts +58 -0
  10. package/dist/memory/backfill.d.ts.map +1 -0
  11. package/dist/memory/backfill.js +85 -0
  12. package/dist/memory/backfill.js.map +1 -0
  13. package/dist/memory/sqlite.d.ts +78 -12
  14. package/dist/memory/sqlite.d.ts.map +1 -1
  15. package/dist/memory/sqlite.js +265 -85
  16. package/dist/memory/sqlite.js.map +1 -1
  17. package/dist/pipeline/gather-context.d.ts.map +1 -1
  18. package/dist/pipeline/gather-context.js +4 -2
  19. package/dist/pipeline/gather-context.js.map +1 -1
  20. package/dist/pipeline/gather-safe.d.ts +24 -4
  21. package/dist/pipeline/gather-safe.d.ts.map +1 -1
  22. package/dist/pipeline/gather-safe.js +42 -6
  23. package/dist/pipeline/gather-safe.js.map +1 -1
  24. package/dist/pipeline/prepare.d.ts.map +1 -1
  25. package/dist/pipeline/prepare.js +26 -0
  26. package/dist/pipeline/prepare.js.map +1 -1
  27. package/dist/pipeline/state.d.ts +3 -1
  28. package/dist/pipeline/state.d.ts.map +1 -1
  29. package/dist/providers/gateway-discovery.d.ts +5 -5
  30. package/dist/providers/gateway-discovery.d.ts.map +1 -1
  31. package/dist/providers/gateway-discovery.js +11 -9
  32. package/dist/providers/gateway-discovery.js.map +1 -1
  33. package/dist/providers/gateway.d.ts +87 -0
  34. package/dist/providers/gateway.d.ts.map +1 -1
  35. package/dist/providers/gateway.js +386 -8
  36. package/dist/providers/gateway.js.map +1 -1
  37. package/dist/types.d.ts +40 -2
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js.map +1 -1
  40. package/dist/utils/concurrency.d.ts.map +1 -1
  41. package/dist/utils/concurrency.js +37 -1
  42. package/dist/utils/concurrency.js.map +1 -1
  43. package/dist/utils/llm-timeout.d.ts +1 -1
  44. package/dist/utils/llm-timeout.d.ts.map +1 -1
  45. package/package.json +8 -8
@@ -45,7 +45,9 @@ const SCHEMA_SQL = `
45
45
  revision_count INTEGER NOT NULL DEFAULT 1,
46
46
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
47
47
  updated_at TEXT NOT NULL DEFAULT (datetime('now')),
48
- last_accessed_at TEXT NOT NULL DEFAULT (datetime('now'))
48
+ last_accessed_at TEXT NOT NULL DEFAULT (datetime('now')),
49
+ embedding_model TEXT,
50
+ embedding_dim INTEGER
49
51
  );
50
52
 
51
53
  CREATE INDEX IF NOT EXISTS idx_obs_project ON memory_observations(project);
@@ -124,6 +126,8 @@ const SCHEMA_SQL = `
124
126
  CREATE INDEX IF NOT EXISTS idx_neg_context_hash ON negative_examples(context_hash);
125
127
  `;
126
128
  const DEFAULT_DEDUP_WINDOW_MINUTES = 15;
129
+ /** Default bounded cosine candidate set size (design D4) when not configured. */
130
+ const DEFAULT_EMBEDDING_CANDIDATE_K = 200;
127
131
  /**
128
132
  * Runs an ADD COLUMN migration idempotently.
129
133
  * Swallows 'duplicate column name' (migration already ran) and rethrows
@@ -146,6 +150,8 @@ export class SqliteMemoryStorage {
146
150
  dedupWindowMinutes;
147
151
  decayConfig;
148
152
  embeddingProvider;
153
+ embeddingModel;
154
+ embeddingCandidateK;
149
155
  pageIndex;
150
156
  constructor(db, filePath, options = {}) {
151
157
  this.db = db;
@@ -153,6 +159,8 @@ export class SqliteMemoryStorage {
153
159
  this.dedupWindowMinutes = options.dedupWindowMinutes ?? DEFAULT_DEDUP_WINDOW_MINUTES;
154
160
  this.decayConfig = options.decayConfig ?? DEFAULT_DECAY_CONFIG;
155
161
  this.embeddingProvider = options.embeddingProvider;
162
+ this.embeddingModel = options.embeddingModel;
163
+ this.embeddingCandidateK = options.embeddingCandidateK ?? DEFAULT_EMBEDDING_CANDIDATE_K;
156
164
  this.pageIndex = new ProjectPageIndexService(this.db);
157
165
  }
158
166
  /**
@@ -199,11 +207,22 @@ export class SqliteMemoryStorage {
199
207
  db.run('CREATE INDEX IF NOT EXISTS idx_obs_last_accessed ON memory_observations(last_accessed_at)');
200
208
  // Migration: add embedding column for hybrid search (NULL when no embedding provider)
201
209
  runIdempotentAlter(db, 'ALTER TABLE memory_observations ADD COLUMN embedding BLOB');
210
+ // Migration: add per-row embedding provider metadata (NULL when embedding is NULL).
211
+ // Used by the read guard to detect provider/dimension mismatches (design D3).
212
+ runIdempotentAlter(db, 'ALTER TABLE memory_observations ADD COLUMN embedding_model TEXT');
213
+ runIdempotentAlter(db, 'ALTER TABLE memory_observations ADD COLUMN embedding_dim INTEGER');
202
214
  return new SqliteMemoryStorage(db, filePath, options);
203
215
  }
204
216
  async searchObservations(project, query, options = {}) {
205
217
  const { limit = 10, type } = options;
206
- // ── Hybrid search (BM25 + semantic) ──────────────────────────
218
+ // ── Hybrid search (BM25 + semantic RE-RANKING) ───────────────
219
+ // NOTE (MEM-HYBRID-006): this is semantic *re-ranking* of a keyword
220
+ // candidate set, NOT pure semantic retrieval. Even with an embedding
221
+ // provider, candidates are first gated by the FTS5 MATCH below, so an
222
+ // observation with no lexical overlap with the query is never a candidate
223
+ // and cannot be surfaced by embedding similarity alone (e.g. "secret
224
+ // leakage" will not recall a "credential exposure" note). Closing this
225
+ // would require unioning an ANN/vector candidate set with the keyword set.
207
226
  if (this.embeddingProvider) {
208
227
  return this._hybridSearch(project, query, { limit, type });
209
228
  }
@@ -268,19 +287,32 @@ export class SqliteMemoryStorage {
268
287
  return rows;
269
288
  }
270
289
  /**
271
- * Hybrid BM25 + semantic search (70% semantic, 30% keyword).
272
- * Only called when embeddingProvider is set.
290
+ * Hybrid keyword + semantic search: unions a bounded cosine candidate set
291
+ * with the keyword (FTS5) candidate set before scoring (spec R5.7-R5.10,
292
+ * design D4/D5). Only called when embeddingProvider is set.
273
293
  *
274
294
  * Strategy:
275
- * 1. Run FTS5 to get keyword candidates (up to limit * 5 to have enough for re-ranking)
276
- * 2. Embed the query
277
- * 3. For each candidate, deserialize its stored embedding and compute cosine similarity
278
- * 4. Candidates without embeddings get cosine_sim = 0 (keyword-only score still applies)
279
- * 5. Combine: final_score = 0.7 * cosine_sim + 0.3 * normalized_bm25
280
- * 6. Sort descending, apply decay filter, return top-k
295
+ * 1. Run FTS5 to get keyword candidates (up to limit * 5), preserving
296
+ * native bm25() order (best match first).
297
+ * 2. Run a bounded, project(+type)-scoped cosine candidate query
298
+ * (embedding IS NOT NULL, ORDER BY last_accessed_at DESC LIMIT K).
299
+ * 3. Compute cosine similarity in JS for candidates that pass the
300
+ * dimension/model read guard (mismatches are excluded, never thrown).
301
+ * 4. Union both sets by id, dedup: an overlapping candidate keeps its
302
+ * real keyword score; a cosine-only candidate gets keyword-score 0.
303
+ * 5. Keyword score uses the unified positional-rank convention
304
+ * `1 - i/(n-1)` over the keyword-ordered list (design D5) — shared
305
+ * with the PostgreSQL backend so both engines score identically
306
+ * post-union.
307
+ * 6. Combine: finalScore = 0.7 * cosineSim + 0.3 * keywordScore.
308
+ * 7. Apply the decay filter, sort descending, cap at limit, update
309
+ * last_accessed_at only for the rows actually returned (R5.10).
281
310
  */
282
311
  async _hybridSearch(project, query, options) {
283
312
  const { limit, type } = options;
313
+ const provider = this.embeddingProvider;
314
+ if (!provider)
315
+ return [];
284
316
  const ftsQuery = query
285
317
  .trim()
286
318
  .split(/\s+/)
@@ -291,80 +323,149 @@ export class SqliteMemoryStorage {
291
323
  return [];
292
324
  // Fetch a larger candidate set for re-ranking
293
325
  const fetchLimit = limit * 5;
294
- let sql = `
326
+ const mapCandidateRow = (row) => ({
327
+ id: row.id,
328
+ type: row.type,
329
+ title: row.title,
330
+ content: row.content,
331
+ filePaths: row.file_paths ? JSON.parse(row.file_paths) : null,
332
+ severity: row.severity ?? null,
333
+ lastAccessed: row.last_accessed_at ? new Date(row.last_accessed_at) : new Date(),
334
+ embedding: row.embedding ? row.embedding : null,
335
+ embeddingModel: row.embedding_model ?? null,
336
+ embeddingDim: row.embedding_dim ?? null,
337
+ });
338
+ // ── Step 1: keyword candidates (FTS5, unchanged gate) ────────────
339
+ let keywordSql = `
295
340
  SELECT o.id, o.type, o.title, o.content, o.file_paths, o.severity,
296
- o.last_accessed_at, o.embedding,
297
- bm25(memory_observations_fts) AS bm25_score
341
+ o.last_accessed_at, o.embedding, o.embedding_model, o.embedding_dim
298
342
  FROM memory_observations o
299
343
  JOIN memory_observations_fts fts ON fts.rowid = o.id
300
344
  WHERE memory_observations_fts MATCH ?
301
345
  AND o.project = ?
302
346
  `;
303
- const params = [ftsQuery, project];
347
+ const keywordParams = [ftsQuery, project];
304
348
  if (type) {
305
- sql += ' AND o.type = ?';
306
- params.push(type);
349
+ keywordSql += ' AND o.type = ?';
350
+ keywordParams.push(type);
307
351
  }
308
- sql += ' ORDER BY bm25(memory_observations_fts) LIMIT ?';
309
- params.push(fetchLimit);
310
- const stmt = this.db.prepare(sql);
311
- stmt.bind(params);
312
- const candidates = [];
313
- while (stmt.step()) {
314
- const row = stmt.getAsObject();
315
- candidates.push({
316
- id: row.id,
317
- type: row.type,
318
- title: row.title,
319
- content: row.content,
320
- filePaths: row.file_paths ? JSON.parse(row.file_paths) : null,
321
- severity: row.severity ?? null,
322
- lastAccessed: row.last_accessed_at ? new Date(row.last_accessed_at) : new Date(),
323
- embedding: row.embedding ? row.embedding : null,
324
- bm25Score: row.bm25_score,
352
+ keywordSql += ' ORDER BY bm25(memory_observations_fts) LIMIT ?';
353
+ keywordParams.push(fetchLimit);
354
+ const keywordStmt = this.db.prepare(keywordSql);
355
+ keywordStmt.bind(keywordParams);
356
+ const keywordCandidates = [];
357
+ while (keywordStmt.step()) {
358
+ keywordCandidates.push(mapCandidateRow(keywordStmt.getAsObject()));
359
+ }
360
+ keywordStmt.free();
361
+ // ── Step 2: bounded cosine candidates (spec R5.7, design D4) ─────
362
+ let cosineSql = `
363
+ SELECT o.id, o.type, o.title, o.content, o.file_paths, o.severity,
364
+ o.last_accessed_at, o.embedding, o.embedding_model, o.embedding_dim
365
+ FROM memory_observations o
366
+ WHERE o.project = ?
367
+ AND o.embedding IS NOT NULL
368
+ `;
369
+ const cosineParams = [project];
370
+ if (type) {
371
+ cosineSql += ' AND o.type = ?';
372
+ cosineParams.push(type);
373
+ }
374
+ cosineSql += ' ORDER BY o.last_accessed_at DESC LIMIT ?';
375
+ cosineParams.push(this.embeddingCandidateK);
376
+ const cosineStmt = this.db.prepare(cosineSql);
377
+ cosineStmt.bind(cosineParams);
378
+ const cosineBoundedCandidates = [];
379
+ while (cosineStmt.step()) {
380
+ cosineBoundedCandidates.push(mapCandidateRow(cosineStmt.getAsObject()));
381
+ }
382
+ cosineStmt.free();
383
+ if (keywordCandidates.length === 0 && cosineBoundedCandidates.length === 0)
384
+ return [];
385
+ // Compute query embedding once. A query-time embed failure is non-fatal
386
+ // (spec: Graceful Degradation on Provider/API Failure): warn once and fall
387
+ // back to keyword-only for this query. `queryVec === null` makes every
388
+ // cosine 0 and empties the cosine-only candidate set, so the union/decay/cap
389
+ // pipeline below runs over the keyword candidates alone — unchanged.
390
+ let queryVec;
391
+ try {
392
+ queryVec = await provider.embed(query);
393
+ }
394
+ catch (error) {
395
+ console.warn(`[ghagga] query embedding failed — degrading to keyword-only for this search: ${error instanceof Error ? error.message : String(error)}`);
396
+ queryVec = null;
397
+ }
398
+ // Dimension/model read guard (design D3): a row whose stored dimension or
399
+ // model doesn't match the active provider is excluded from the cosine set
400
+ // (task 3.2) — mirrors the pre-existing "no embedding → cosine 0" rule.
401
+ // `this.embeddingModel` may be undefined (EmbeddingProvider does not yet
402
+ // expose a model name) — when undefined, only dimension is enforced.
403
+ const isEmbeddingUsable = (row) => {
404
+ if (!row.embedding)
405
+ return false;
406
+ if (row.embeddingDim !== null && row.embeddingDim !== provider.dimension)
407
+ return false;
408
+ if (this.embeddingModel !== undefined && row.embeddingModel !== this.embeddingModel) {
409
+ return false;
410
+ }
411
+ return true;
412
+ };
413
+ const computeCosine = (row) => {
414
+ if (queryVec === null || !row.embedding || !isEmbeddingUsable(row))
415
+ return 0;
416
+ try {
417
+ const storedVec = deserializeEmbedding(row.embedding);
418
+ if (storedVec.length !== queryVec.length)
419
+ return 0;
420
+ return cosineSimilarity(queryVec, storedVec);
421
+ }
422
+ catch {
423
+ // Malformed embedding — treat as 0
424
+ return 0;
425
+ }
426
+ };
427
+ // ── Step 3: unified positional-rank keyword score (design D5) ────
428
+ // keywordCandidates is already ordered by bm25() ASC (best match first).
429
+ const n = keywordCandidates.length;
430
+ const keywordScoreById = new Map();
431
+ keywordCandidates.forEach((candidate, i) => {
432
+ keywordScoreById.set(candidate.id, n > 1 ? 1 - i / (n - 1) : 1);
433
+ });
434
+ // ── Step 4: cosine similarity, top limit*5 of the GUARDED set ────
435
+ // When the query embed failed (queryVec === null), there are no cosine
436
+ // candidates — the union below sees keyword candidates only.
437
+ const cosineTop = queryVec === null
438
+ ? []
439
+ : cosineBoundedCandidates
440
+ .filter(isEmbeddingUsable)
441
+ .map((candidate) => ({ candidate, cosineSim: computeCosine(candidate) }))
442
+ .sort((a, b) => b.cosineSim - a.cosineSim)
443
+ .slice(0, fetchLimit);
444
+ const merged = new Map();
445
+ for (const candidate of keywordCandidates) {
446
+ merged.set(candidate.id, {
447
+ candidate,
448
+ cosineSim: computeCosine(candidate),
449
+ keywordScore: keywordScoreById.get(candidate.id) ?? 0,
325
450
  });
326
451
  }
327
- stmt.free();
328
- if (candidates.length === 0)
452
+ for (const { candidate, cosineSim } of cosineTop) {
453
+ if (merged.has(candidate.id))
454
+ continue; // keep the real keyword score (R5.8)
455
+ merged.set(candidate.id, { candidate, cosineSim, keywordScore: 0 }); // vector-only (R5.9)
456
+ }
457
+ if (merged.size === 0)
329
458
  return [];
330
- // Compute query embedding
331
- // biome-ignore lint/style/noNonNullAssertion: embeddingProvider is checked by the caller (_hybridSearch is only called when it's set)
332
- const queryVec = await this.embeddingProvider.embed(query);
333
- // BM25 scores from FTS5 are negative (lower = better match).
334
- // Normalize to [0, 1]: higher is better.
335
- const bm25Scores = candidates.map((c) => c.bm25Score);
336
- const minBm25 = Math.min(...bm25Scores);
337
- const maxBm25 = Math.max(...bm25Scores);
338
- const bm25Range = maxBm25 - minBm25;
459
+ // ── Step 6: score, decay filter, sort, cap (spec R5.5/R5.8) ──────
339
460
  const now = new Date();
340
461
  const scored = [];
341
- for (const candidate of candidates) {
462
+ for (const { candidate, cosineSim, keywordScore } of merged.values()) {
342
463
  const strength = computeStrength(candidate.lastAccessed, now, this.decayConfig);
343
464
  if (strength < this.decayConfig.minStrength)
344
465
  continue;
345
- // Normalize BM25 to [0, 1]. FTS5 bm25() is MORE NEGATIVE = BETTER match,
346
- // so the best candidate (minBm25) must map to 1 and the worst (maxBm25) to 0.
347
- const normalizedBm25 = bm25Range === 0 ? 1 : (maxBm25 - candidate.bm25Score) / bm25Range;
348
- // Cosine similarity from stored embedding (0 if not present)
349
- let cosineSim = 0;
350
- if (candidate.embedding) {
351
- try {
352
- const storedVec = deserializeEmbedding(candidate.embedding);
353
- // Dimension guard: a stored vector from a different embedding model
354
- // is meaningless against this query — skip cosine (mirror queries.ts)
355
- if (storedVec.length === queryVec.length) {
356
- cosineSim = cosineSimilarity(queryVec, storedVec);
357
- }
358
- }
359
- catch {
360
- // Malformed embedding — treat as 0
361
- }
362
- }
363
- // 70/30 weighted combination
364
- const finalScore = 0.7 * cosineSim + 0.3 * normalizedBm25;
466
+ const finalScore = 0.7 * cosineSim + 0.3 * keywordScore;
365
467
  scored.push({ candidate, finalScore, strength });
366
468
  }
367
- // Sort by final score descending
368
469
  scored.sort((a, b) => b.finalScore - a.finalScore);
369
470
  const results = [];
370
471
  const accessedIds = [];
@@ -382,7 +483,7 @@ export class SqliteMemoryStorage {
382
483
  strength,
383
484
  });
384
485
  }
385
- // Update last_accessed_at for returned observations
486
+ // Update last_accessed_at only for the final returned rows (R5.10)
386
487
  if (accessedIds.length > 0) {
387
488
  const placeholders = accessedIds.map(() => '?').join(',');
388
489
  this.db.run(`UPDATE memory_observations SET last_accessed_at = datetime('now') WHERE id IN (${placeholders})`, accessedIds);
@@ -432,12 +533,12 @@ export class SqliteMemoryStorage {
432
533
  if (existingByTopic.length > 0 && existingByTopic[0]?.values.length > 0) {
433
534
  const existingId = existingByTopic[0]?.values[0]?.[0];
434
535
  const filePathsJson = JSON.stringify(data.filePaths ?? []);
435
- // Compute and store embedding if provider available
436
- const embeddingBuf = await this._computeEmbeddingBuffer(`${data.title} ${data.content}`);
536
+ // Compute and store embedding + its provider metadata if provider available
537
+ const embeddingMeta = await this._computeEmbeddingMeta(`${data.title} ${data.content}`);
437
538
  const updated = this.db.exec(`
438
539
  UPDATE memory_observations
439
540
  SET content = ?, title = ?, content_hash = ?, file_paths = ?,
440
- severity = ?, embedding = ?,
541
+ severity = ?, embedding = ?, embedding_model = ?, embedding_dim = ?,
441
542
  revision_count = revision_count + 1,
442
543
  updated_at = datetime('now'),
443
544
  last_accessed_at = datetime('now')
@@ -449,7 +550,9 @@ export class SqliteMemoryStorage {
449
550
  contentHash,
450
551
  filePathsJson,
451
552
  data.severity ?? null,
452
- embeddingBuf,
553
+ embeddingMeta.buffer,
554
+ embeddingMeta.model,
555
+ embeddingMeta.dim,
453
556
  existingId,
454
557
  ]);
455
558
  const row = updated[0]?.values[0];
@@ -465,13 +568,14 @@ export class SqliteMemoryStorage {
465
568
  };
466
569
  }
467
570
  }
468
- // New observation — compute embedding if provider available
469
- const embeddingBuf = await this._computeEmbeddingBuffer(`${data.title} ${data.content}`);
571
+ // New observation — compute embedding + its provider metadata if provider available
572
+ const embeddingMeta = await this._computeEmbeddingMeta(`${data.title} ${data.content}`);
470
573
  const filePathsJson = JSON.stringify(data.filePaths ?? []);
471
574
  const inserted = this.db.exec(`
472
575
  INSERT INTO memory_observations
473
- (session_id, project, type, title, content, severity, topic_key, file_paths, content_hash, embedding, last_accessed_at)
474
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
576
+ (session_id, project, type, title, content, severity, topic_key, file_paths, content_hash,
577
+ embedding, embedding_model, embedding_dim, last_accessed_at)
578
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
475
579
  RETURNING id, type, title, content, file_paths, severity
476
580
  `, [
477
581
  data.sessionId ?? null,
@@ -483,7 +587,9 @@ export class SqliteMemoryStorage {
483
587
  data.topicKey ?? null,
484
588
  filePathsJson,
485
589
  contentHash,
486
- embeddingBuf,
590
+ embeddingMeta.buffer,
591
+ embeddingMeta.model,
592
+ embeddingMeta.dim,
487
593
  ]);
488
594
  const row = inserted[0]?.values[0];
489
595
  if (!row)
@@ -501,20 +607,28 @@ export class SqliteMemoryStorage {
501
607
  };
502
608
  }
503
609
  /**
504
- * Compute embedding buffer for storage.
505
- * Returns the serialized float32 Buffer when embeddingProvider is available,
506
- * or null (no-op) when it is not — enabling graceful degradation.
610
+ * Compute the embedding buffer plus its provider metadata for storage
611
+ * (design D3 — per-row `embedding_model`/`embedding_dim`, task 3.6).
612
+ * Returns all-null when no embeddingProvider is configured (no-op) or when
613
+ * embedding generation fails — a failed embed is non-fatal: the row is
614
+ * still saved with a NULL embedding rather than throwing (spec: Graceful
615
+ * Degradation on Provider/API Failure).
507
616
  */
508
- async _computeEmbeddingBuffer(text) {
617
+ async _computeEmbeddingMeta(text) {
509
618
  if (!this.embeddingProvider)
510
- return null;
619
+ return { buffer: null, model: null, dim: null };
511
620
  try {
512
621
  const vec = await this.embeddingProvider.embed(text);
513
- return serializeEmbedding(vec);
622
+ return {
623
+ buffer: serializeEmbedding(vec),
624
+ model: this.embeddingModel ?? null,
625
+ dim: this.embeddingProvider.dimension,
626
+ };
514
627
  }
515
- catch {
628
+ catch (error) {
516
629
  // Embedding failure is non-fatal — store NULL and continue
517
- return null;
630
+ console.warn(`[ghagga] embedding computation failed during save — persisting NULL embedding: ${error instanceof Error ? error.message : String(error)}`);
631
+ return { buffer: null, model: null, dim: null };
518
632
  }
519
633
  }
520
634
  async createSession(data) {
@@ -744,14 +858,80 @@ export class SqliteMemoryStorage {
744
858
  this.db.run('DELETE FROM negative_examples WHERE finding_hash = ?', [findingHash]);
745
859
  return this.db.getRowsModified() > 0;
746
860
  }
747
- async close() {
861
+ /**
862
+ * Export the in-memory WASM database and write it to disk WITHOUT closing
863
+ * the underlying handle — shared by close() and flush() (design D6).
864
+ */
865
+ _writeToDisk() {
748
866
  const dir = dirname(this.filePath);
749
867
  if (!existsSync(dir)) {
750
868
  mkdirSync(dir, { recursive: true });
751
869
  }
752
870
  const data = this.db.export();
753
871
  writeFileSync(this.filePath, Buffer.from(data));
872
+ }
873
+ /**
874
+ * Durability hook for the backfill script (design D6, task 6.1): flushes
875
+ * the in-memory WASM database to disk after each batch so a mid-run crash
876
+ * loses at most the in-flight batch, not prior progress. Unlike close(),
877
+ * the database handle stays open and usable.
878
+ */
879
+ async flush() {
880
+ this._writeToDisk();
881
+ }
882
+ async close() {
883
+ this._writeToDisk();
754
884
  this.db.close();
755
885
  }
886
+ // ── Backfill (design D6) ────────────────────────────────────────
887
+ /**
888
+ * List up to `limit` observations needing an embedding for the active
889
+ * provider/model, ordered by id ascending starting after `afterId`.
890
+ * Always matches NULL-embedding rows; with `includeMismatched` also
891
+ * matches rows whose stored `embedding_model`/`embedding_dim` disagree
892
+ * with the active provider (backfill `--re-embed`).
893
+ */
894
+ async listObservationsNeedingEmbedding(options) {
895
+ const { afterId, limit, activeModel, activeDim, includeMismatched } = options;
896
+ let sql = `
897
+ SELECT id, title, content FROM memory_observations
898
+ WHERE id > ?
899
+ AND (
900
+ embedding IS NULL
901
+ `;
902
+ const params = [afterId];
903
+ if (includeMismatched) {
904
+ sql += `
905
+ OR embedding_model IS NULL OR embedding_model != ?
906
+ OR embedding_dim IS NULL OR embedding_dim != ?
907
+ `;
908
+ params.push(activeModel, activeDim);
909
+ }
910
+ sql += `
911
+ )
912
+ ORDER BY id ASC
913
+ LIMIT ?
914
+ `;
915
+ params.push(limit);
916
+ const stmt = this.db.prepare(sql);
917
+ stmt.bind(params);
918
+ const rows = [];
919
+ while (stmt.step()) {
920
+ const row = stmt.getAsObject();
921
+ rows.push({
922
+ id: row.id,
923
+ text: `${row.title} ${row.content}`,
924
+ });
925
+ }
926
+ stmt.free();
927
+ return rows;
928
+ }
929
+ /**
930
+ * Persist a backfilled embedding for a single observation (design D6).
931
+ * Metadata-only write — content/updated_at/last_accessed_at are untouched.
932
+ */
933
+ async updateObservationEmbedding(id, embedding, model, dim) {
934
+ this.db.run('UPDATE memory_observations SET embedding = ?, embedding_model = ?, embedding_dim = ? WHERE id = ?', [serializeEmbedding(embedding), model, dim, id]);
935
+ }
756
936
  }
757
937
  //# sourceMappingURL=sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/memory/sqlite.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gather-context.d.ts","sourceRoot":"","sources":["../../src/pipeline/gather-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoK3E"}
1
+ {"version":3,"file":"gather-context.d.ts","sourceRoot":"","sources":["../../src/pipeline/gather-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsK3E"}
@@ -41,13 +41,14 @@ export async function gatherContext(state) {
41
41
  ? 'Using precomputed static analysis from runner...'
42
42
  : 'Running static analysis & memory search...',
43
43
  });
44
- const [staticResult, rawMemoryContext, codeIntelResults] = await Promise.all([
44
+ const [staticResult, rawMemoryContext, codeIntelOutcome] = await Promise.all([
45
45
  input.precomputedStaticAnalysis
46
46
  ? Promise.resolve(input.precomputedStaticAnalysis)
47
47
  : runStaticAnalysisSafe(fileList, input, failedSteps),
48
48
  aiEnabled ? searchMemorySafe(input, fileList, failedSteps) : Promise.resolve(null),
49
49
  queryCodeIntelSafe(input, fileList, emit, failedSteps),
50
50
  ]);
51
+ const codeIntelResults = codeIntelOutcome.results;
51
52
  state.staticResult = staticResult;
52
53
  state.rawMemoryContext = rawMemoryContext;
53
54
  state.codeIntelResults = codeIntelResults;
@@ -131,8 +132,9 @@ export async function gatherContext(state) {
131
132
  enabled: true,
132
133
  providerAvailable: !!input.codeIntelProvider,
133
134
  filesQueried: fileList.length,
135
+ filesFailed: codeIntelOutcome.filesFailed,
134
136
  filesWithData: codeIntelResults.filter((r) => r.callers.length > 0 || r.callees.length > 0 || r.imports.length > 0).length,
135
- queryDurationMs: 0, // Timing captured in queryCodeIntelSafe
137
+ queryDurationMs: codeIntelOutcome.durationMs,
136
138
  };
137
139
  }
138
140
  {