@memextend/claude-code 0.2.0 → 0.3.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.
@@ -394,118 +394,168 @@ var SQLiteStorage = class {
394
394
  }
395
395
  };
396
396
 
397
- // ../../core/dist/storage/lancedb.js
398
- var lancedb = __toESM(require("@lancedb/lancedb"), 1);
399
- var LanceDBStorage = class _LanceDBStorage {
397
+ // ../../core/dist/storage/sqlite-vec.js
398
+ var import_better_sqlite32 = __toESM(require("better-sqlite3"), 1);
399
+
400
+ // ../../../node_modules/sqlite-vec/index.mjs
401
+ var import_node_path = require("node:path");
402
+ var import_node_url = require("node:url");
403
+ var import_node_process = require("node:process");
404
+ var import_node_fs = require("node:fs");
405
+ var import_meta = {};
406
+ var BASE_PACKAGE_NAME = "sqlite-vec";
407
+ var ENTRYPOINT_BASE_NAME = "vec0";
408
+ var supportedPlatforms = [["macos", "aarch64"], ["macos", "x86_64"], ["windows", "x86_64"], ["linux", "x86_64"], ["linux", "aarch64"]];
409
+ var invalidPlatformErrorMessage = `Unsupported platform for ${BASE_PACKAGE_NAME}, on a ${import_node_process.platform}-${import_node_process.arch} machine. Supported platforms are (${supportedPlatforms.map(([p, a]) => `${p}-${a}`).join(",")}). Consult the ${BASE_PACKAGE_NAME} NPM package README for details.`;
410
+ var extensionNotFoundErrorMessage = (packageName) => `Loadble extension for ${BASE_PACKAGE_NAME} not found. Was the ${packageName} package installed?`;
411
+ function validPlatform(platform2, arch2) {
412
+ return supportedPlatforms.find(([p, a]) => platform2 == p && arch2 === a) !== null;
413
+ }
414
+ function extensionSuffix(platform2) {
415
+ if (platform2 === "win32")
416
+ return "dll";
417
+ if (platform2 === "darwin")
418
+ return "dylib";
419
+ return "so";
420
+ }
421
+ function platformPackageName(platform2, arch2) {
422
+ const os = platform2 === "win32" ? "windows" : platform2;
423
+ return `${BASE_PACKAGE_NAME}-${os}-${arch2}`;
424
+ }
425
+ function getLoadablePath() {
426
+ if (!validPlatform(import_node_process.platform, import_node_process.arch)) {
427
+ throw new Error(
428
+ invalidPlatformErrorMessage
429
+ );
430
+ }
431
+ const packageName = platformPackageName(import_node_process.platform, import_node_process.arch);
432
+ const loadablePath = (0, import_node_path.join)(
433
+ (0, import_node_url.fileURLToPath)(new URL((0, import_node_path.join)("."), import_meta.url)),
434
+ "..",
435
+ packageName,
436
+ `${ENTRYPOINT_BASE_NAME}.${extensionSuffix(import_node_process.platform)}`
437
+ );
438
+ if (!(0, import_node_fs.statSync)(loadablePath, { throwIfNoEntry: false })) {
439
+ throw new Error(extensionNotFoundErrorMessage(packageName));
440
+ }
441
+ return loadablePath;
442
+ }
443
+ function load(db) {
444
+ db.loadExtension(getLoadablePath());
445
+ }
446
+
447
+ // ../../core/dist/storage/sqlite-vec.js
448
+ var SQLiteVecStorage = class _SQLiteVecStorage {
400
449
  db;
401
- table = null;
402
- tableName = "memories";
450
+ tableName = "memory_vectors";
403
451
  dimensions = 384;
404
452
  constructor(db) {
405
453
  this.db = db;
406
454
  }
407
455
  static async create(dbPath) {
408
- const db = await lancedb.connect(dbPath);
409
- const storage = new _LanceDBStorage(db);
410
- await storage.initialize();
456
+ let actualPath = dbPath;
457
+ if (dbPath.endsWith("vectors") || dbPath.endsWith("vectors/")) {
458
+ actualPath = dbPath.replace(/\/?$/, ".db");
459
+ }
460
+ const db = new import_better_sqlite32.default(actualPath);
461
+ load(db);
462
+ const storage = new _SQLiteVecStorage(db);
463
+ storage.initialize();
411
464
  return storage;
412
465
  }
413
- async initialize() {
414
- const tableNames = await this.db.tableNames();
415
- if (tableNames.includes(this.tableName)) {
416
- this.table = await this.db.openTable(this.tableName);
417
- }
466
+ initialize() {
467
+ this.db.exec(`
468
+ CREATE VIRTUAL TABLE IF NOT EXISTS ${this.tableName} USING vec0(
469
+ id TEXT PRIMARY KEY,
470
+ vector FLOAT[${this.dimensions}]
471
+ )
472
+ `);
418
473
  }
419
474
  async insertVector(id, vector) {
420
475
  if (vector.length !== this.dimensions) {
421
476
  throw new Error(`Vector must have ${this.dimensions} dimensions, got ${vector.length}`);
422
477
  }
423
- const data = [{ id, vector }];
424
- if (!this.table) {
425
- this.table = await this.db.createTable(this.tableName, data);
426
- } else {
427
- await this.table.add(data);
428
- }
429
- await this.optimize();
478
+ const float32 = new Float32Array(vector);
479
+ const vectorBuffer = Buffer.from(float32.buffer);
480
+ const stmt = this.db.prepare(`
481
+ INSERT OR REPLACE INTO ${this.tableName} (id, vector)
482
+ VALUES (?, ?)
483
+ `);
484
+ stmt.run(id, vectorBuffer);
430
485
  }
431
486
  async insertVectors(items) {
432
- for (const item of items) {
433
- if (item.vector.length !== this.dimensions) {
434
- throw new Error(`Vector must have ${this.dimensions} dimensions, got ${item.vector.length}`);
487
+ const stmt = this.db.prepare(`
488
+ INSERT OR REPLACE INTO ${this.tableName} (id, vector)
489
+ VALUES (?, ?)
490
+ `);
491
+ const insertMany = this.db.transaction((items2) => {
492
+ for (const item of items2) {
493
+ if (item.vector.length !== this.dimensions) {
494
+ throw new Error(`Vector must have ${this.dimensions} dimensions, got ${item.vector.length}`);
495
+ }
496
+ const float32 = new Float32Array(item.vector);
497
+ const vectorBuffer = Buffer.from(float32.buffer);
498
+ stmt.run(item.id, vectorBuffer);
435
499
  }
436
- }
437
- if (!this.table) {
438
- this.table = await this.db.createTable(this.tableName, items);
439
- } else {
440
- await this.table.add(items);
441
- }
442
- await this.optimize();
500
+ });
501
+ insertMany(items);
443
502
  }
444
503
  async search(vector, limit = 10) {
445
- if (!this.table) {
446
- return [];
504
+ if (vector.length !== this.dimensions) {
505
+ throw new Error(`Query vector must have ${this.dimensions} dimensions, got ${vector.length}`);
447
506
  }
448
507
  const effectiveLimit = limit > 0 ? limit : 100;
449
- const results = await this.table.vectorSearch(vector).limit(effectiveLimit).toArray();
450
- return results.map((row) => ({
508
+ const float32 = new Float32Array(vector);
509
+ const vectorBuffer = Buffer.from(float32.buffer);
510
+ const stmt = this.db.prepare(`
511
+ SELECT id, distance
512
+ FROM ${this.tableName}
513
+ WHERE vector MATCH ?
514
+ ORDER BY distance
515
+ LIMIT ?
516
+ `);
517
+ const rows = stmt.all(vectorBuffer, effectiveLimit);
518
+ return rows.map((row) => ({
451
519
  id: row.id,
452
- score: 1 - row._distance
453
- // Convert distance to similarity
520
+ score: 1 / (1 + row.distance)
454
521
  }));
455
522
  }
456
523
  async deleteVector(id) {
457
- if (!this.table)
458
- return;
459
- const sanitizedId = id.replace(/'/g, "''");
460
- await this.table.delete(`id = '${sanitizedId}'`);
524
+ const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE id = ?`);
525
+ stmt.run(id);
461
526
  }
462
527
  async getVectorCount() {
463
- if (!this.table)
464
- return 0;
465
- return await this.table.countRows();
528
+ const stmt = this.db.prepare(`SELECT COUNT(*) as count FROM ${this.tableName}`);
529
+ const result = stmt.get();
530
+ return result.count;
466
531
  }
467
532
  async getVectorsByIds(ids) {
468
533
  const result = /* @__PURE__ */ new Map();
469
- if (!this.table || ids.length === 0)
534
+ if (ids.length === 0)
470
535
  return result;
471
536
  const BATCH_SIZE = 100;
472
- try {
473
- for (let i = 0; i < ids.length; i += BATCH_SIZE) {
474
- const batch = ids.slice(i, i + BATCH_SIZE);
475
- const sanitizedIds = batch.map((id) => id.replace(/'/g, "''"));
476
- const filter = sanitizedIds.map((id) => `id = '${id}'`).join(" OR ");
477
- const rows = await this.table.query().where(filter).toArray();
478
- for (const row of rows) {
479
- result.set(row.id, row.vector);
480
- }
537
+ for (let i = 0; i < ids.length; i += BATCH_SIZE) {
538
+ const batch = ids.slice(i, i + BATCH_SIZE);
539
+ const placeholders = batch.map(() => "?").join(",");
540
+ const stmt = this.db.prepare(`
541
+ SELECT id, vector FROM ${this.tableName}
542
+ WHERE id IN (${placeholders})
543
+ `);
544
+ const rows = stmt.all(...batch);
545
+ for (const row of rows) {
546
+ const vector = Array.from(new Float32Array(row.vector));
547
+ result.set(row.id, vector);
481
548
  }
482
- } catch {
483
549
  }
484
550
  return result;
485
551
  }
486
552
  async close() {
553
+ this.db.close();
487
554
  }
488
- /**
489
- * Optimize the LanceDB table to reduce storage.
490
- * This compacts files, prunes old versions, and optimizes indices.
491
- * Should be called periodically (e.g., after many inserts or on cleanup command).
492
- *
493
- * @param cleanupOlderThan - Date before which old versions should be pruned (default: now)
494
- */
495
- async optimize(cleanupOlderThan) {
496
- if (!this.table)
497
- return null;
498
- try {
499
- const table = this.table;
500
- const stats = await table.optimize({ cleanupOlderThan: cleanupOlderThan ?? /* @__PURE__ */ new Date() });
501
- return {
502
- compacted: stats?.compaction?.filesRemoved ?? 0,
503
- pruned: stats?.prune?.versionsRemoved ?? 0
504
- };
505
- } catch (error) {
506
- console.error("[memextend] LanceDB optimize failed:", error);
507
- return null;
508
- }
555
+ // No optimize needed - SQLite handles this automatically!
556
+ async optimize() {
557
+ this.db.exec("VACUUM");
558
+ return { compacted: 0, pruned: 0 };
509
559
  }
510
560
  };
511
561
 
@@ -957,7 +1007,7 @@ async function main() {
957
1007
  log("Stop", `Found ${captures.length} captures to save`, { reasoning: reasoningCount, tools: toolCount });
958
1008
  const projectId = getProjectId2(input.cwd);
959
1009
  const sqlite = new SQLiteStorage(DB_PATH);
960
- const lancedb2 = await LanceDBStorage.create(VECTORS_PATH);
1010
+ const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
961
1011
  const project = sqlite.getProject(projectId);
962
1012
  if (!project) {
963
1013
  sqlite.insertProject({
@@ -1000,14 +1050,14 @@ async function main() {
1000
1050
  }
1001
1051
  sqlite.insertMemory(memory);
1002
1052
  const vector = await embedder.embed(content);
1003
- await lancedb2.insertVector(memoryId, vector);
1053
+ await vectorStore.insertVector(memoryId, vector);
1004
1054
  }
1005
1055
  const dedupeOnPrune = config.storage?.deduplicateOnPrune ?? true;
1006
1056
  const dedupeThreshold = config.retrieval?.deduplicationThreshold ?? 0.85;
1007
1057
  if (dedupeOnPrune) {
1008
1058
  const dedupedIds = await deduplicateStoredMemories(
1009
1059
  sqlite,
1010
- lancedb2,
1060
+ vectorStore,
1011
1061
  projectId,
1012
1062
  dedupeThreshold
1013
1063
  );
@@ -1026,12 +1076,12 @@ async function main() {
1026
1076
  if (pruneResult.deleted > 0) {
1027
1077
  log("Stop", `Pruned ${pruneResult.deleted} old memories to stay within limits`);
1028
1078
  for (const id of pruneResult.deletedIds) {
1029
- await lancedb2.deleteVector(id);
1079
+ await vectorStore.deleteVector(id);
1030
1080
  }
1031
1081
  }
1032
1082
  }
1033
1083
  sqlite.close();
1034
- await lancedb2.close();
1084
+ await vectorStore.close();
1035
1085
  await embedder.close();
1036
1086
  log("Stop", `SUCCESS: Saved ${captures.length} memories`);
1037
1087
  outputResult({ continue: true, suppressOutput: true });
@@ -1066,13 +1116,13 @@ async function loadConfig() {
1066
1116
  function outputResult(result) {
1067
1117
  console.log(JSON.stringify(result));
1068
1118
  }
1069
- async function deduplicateStoredMemories(sqlite, lancedb2, projectId, threshold) {
1119
+ async function deduplicateStoredMemories(sqlite, vectorStore, projectId, threshold) {
1070
1120
  const deletedIds = [];
1071
1121
  const memories = sqlite.getRecentMemories(projectId, 0, 0);
1072
1122
  if (memories.length < 2)
1073
1123
  return deletedIds;
1074
1124
  const memoryIds = memories.map((m) => m.id);
1075
- const vectors = await lancedb2.getVectorsByIds(memoryIds);
1125
+ const vectors = await vectorStore.getVectorsByIds(memoryIds);
1076
1126
  if (vectors.size < 2)
1077
1127
  return deletedIds;
1078
1128
  const keepIds = /* @__PURE__ */ new Set();
@@ -1096,7 +1146,7 @@ async function deduplicateStoredMemories(sqlite, lancedb2, projectId, threshold)
1096
1146
  keptVectors.push({ id: memory.id, vector });
1097
1147
  } else {
1098
1148
  sqlite.deleteMemory(memory.id);
1099
- await lancedb2.deleteVector(memory.id);
1149
+ await vectorStore.deleteVector(memory.id);
1100
1150
  deletedIds.push(memory.id);
1101
1151
  }
1102
1152
  }
@@ -6,7 +6,7 @@ import { readFile } from 'fs/promises';
6
6
  import { join, basename } from 'path';
7
7
  import { homedir } from 'os';
8
8
  import { execSync } from 'child_process';
9
- import { SQLiteStorage, LanceDBStorage, TranscriptParser, formatCaptureContent, isTextCapture, isToolCapture, createEmbedFunction, cosineSimilarity } from '@memextend/core';
9
+ import { SQLiteStorage, SQLiteVecStorage, TranscriptParser, formatCaptureContent, isTextCapture, isToolCapture, createEmbedFunction, cosineSimilarity } from '@memextend/core';
10
10
  import { log, logError } from './logger.js';
11
11
  const MEMEXTEND_DIR = join(homedir(), '.memextend');
12
12
  const CONFIG_PATH = join(MEMEXTEND_DIR, 'config.json');
@@ -63,7 +63,7 @@ async function main() {
63
63
  const projectId = getProjectId(input.cwd);
64
64
  // Initialize storage
65
65
  const sqlite = new SQLiteStorage(DB_PATH);
66
- const lancedb = await LanceDBStorage.create(VECTORS_PATH);
66
+ const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
67
67
  // Ensure project is registered
68
68
  const project = sqlite.getProject(projectId);
69
69
  if (!project) {
@@ -112,13 +112,13 @@ async function main() {
112
112
  sqlite.insertMemory(memory);
113
113
  // Generate and store embedding
114
114
  const vector = await embedder.embed(content);
115
- await lancedb.insertVector(memoryId, vector);
115
+ await vectorStore.insertVector(memoryId, vector);
116
116
  }
117
117
  // Deduplicate highly similar memories to save space
118
118
  const dedupeOnPrune = config.storage?.deduplicateOnPrune ?? true;
119
119
  const dedupeThreshold = config.retrieval?.deduplicationThreshold ?? 0.85;
120
120
  if (dedupeOnPrune) {
121
- const dedupedIds = await deduplicateStoredMemories(sqlite, lancedb, projectId, dedupeThreshold);
121
+ const dedupedIds = await deduplicateStoredMemories(sqlite, vectorStore, projectId, dedupeThreshold);
122
122
  if (dedupedIds.length > 0) {
123
123
  log('Stop', `Deduplicated ${dedupedIds.length} similar memories`);
124
124
  }
@@ -137,13 +137,13 @@ async function main() {
137
137
  log('Stop', `Pruned ${pruneResult.deleted} old memories to stay within limits`);
138
138
  // Also delete from vector store
139
139
  for (const id of pruneResult.deletedIds) {
140
- await lancedb.deleteVector(id);
140
+ await vectorStore.deleteVector(id);
141
141
  }
142
142
  }
143
143
  }
144
144
  // Close storage and embedder
145
145
  sqlite.close();
146
- await lancedb.close();
146
+ await vectorStore.close();
147
147
  await embedder.close();
148
148
  log('Stop', `SUCCESS: Saved ${captures.length} memories`);
149
149
  outputResult({ continue: true, suppressOutput: true });
@@ -186,7 +186,7 @@ function outputResult(result) {
186
186
  * Deduplicate stored memories by removing older ones that are highly similar to newer ones.
187
187
  * Uses cosine similarity on embeddings. Keeps the newest memory when duplicates found.
188
188
  */
189
- async function deduplicateStoredMemories(sqlite, lancedb, projectId, threshold) {
189
+ async function deduplicateStoredMemories(sqlite, vectorStore, projectId, threshold) {
190
190
  const deletedIds = [];
191
191
  // Get all memories for this project, sorted by date (newest first)
192
192
  const memories = sqlite.getRecentMemories(projectId, 0, 0); // 0 = unlimited
@@ -194,7 +194,7 @@ async function deduplicateStoredMemories(sqlite, lancedb, projectId, threshold)
194
194
  return deletedIds;
195
195
  // Get vectors for all memories
196
196
  const memoryIds = memories.map(m => m.id);
197
- const vectors = await lancedb.getVectorsByIds(memoryIds);
197
+ const vectors = await vectorStore.getVectorsByIds(memoryIds);
198
198
  if (vectors.size < 2)
199
199
  return deletedIds;
200
200
  // Track which memories to keep (newest first wins)
@@ -222,7 +222,7 @@ async function deduplicateStoredMemories(sqlite, lancedb, projectId, threshold)
222
222
  else {
223
223
  // Delete this duplicate
224
224
  sqlite.deleteMemory(memory.id);
225
- await lancedb.deleteVector(memory.id);
225
+ await vectorStore.deleteVector(memory.id);
226
226
  deletedIds.push(memory.id);
227
227
  }
228
228
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}