@memextend/cursor 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.
- package/dist/cli/capture.cjs +128 -78
- package/dist/cli/capture.js +4 -4
- package/dist/cli/capture.js.map +1 -1
- package/dist/cli/inject.cjs +133 -83
- package/dist/cli/inject.js +4 -4
- package/dist/cli/inject.js.map +1 -1
- package/dist/mcp/server.cjs +141 -91
- package/dist/mcp/server.js +12 -12
- package/dist/mcp/server.js.map +1 -1
- package/package.json +2 -2
- package/scripts/build-cli.js +1 -1
- package/scripts/build-mcp.js +1 -1
package/dist/cli/capture.cjs
CHANGED
|
@@ -395,118 +395,168 @@ var SQLiteStorage = class {
|
|
|
395
395
|
}
|
|
396
396
|
};
|
|
397
397
|
|
|
398
|
-
// ../../core/dist/storage/
|
|
399
|
-
var
|
|
400
|
-
|
|
398
|
+
// ../../core/dist/storage/sqlite-vec.js
|
|
399
|
+
var import_better_sqlite32 = __toESM(require("better-sqlite3"), 1);
|
|
400
|
+
|
|
401
|
+
// ../../../node_modules/sqlite-vec/index.mjs
|
|
402
|
+
var import_node_path = require("node:path");
|
|
403
|
+
var import_node_url = require("node:url");
|
|
404
|
+
var import_node_process = require("node:process");
|
|
405
|
+
var import_node_fs = require("node:fs");
|
|
406
|
+
var import_meta = {};
|
|
407
|
+
var BASE_PACKAGE_NAME = "sqlite-vec";
|
|
408
|
+
var ENTRYPOINT_BASE_NAME = "vec0";
|
|
409
|
+
var supportedPlatforms = [["macos", "aarch64"], ["macos", "x86_64"], ["windows", "x86_64"], ["linux", "x86_64"], ["linux", "aarch64"]];
|
|
410
|
+
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.`;
|
|
411
|
+
var extensionNotFoundErrorMessage = (packageName) => `Loadble extension for ${BASE_PACKAGE_NAME} not found. Was the ${packageName} package installed?`;
|
|
412
|
+
function validPlatform(platform2, arch2) {
|
|
413
|
+
return supportedPlatforms.find(([p, a]) => platform2 == p && arch2 === a) !== null;
|
|
414
|
+
}
|
|
415
|
+
function extensionSuffix(platform2) {
|
|
416
|
+
if (platform2 === "win32")
|
|
417
|
+
return "dll";
|
|
418
|
+
if (platform2 === "darwin")
|
|
419
|
+
return "dylib";
|
|
420
|
+
return "so";
|
|
421
|
+
}
|
|
422
|
+
function platformPackageName(platform2, arch2) {
|
|
423
|
+
const os = platform2 === "win32" ? "windows" : platform2;
|
|
424
|
+
return `${BASE_PACKAGE_NAME}-${os}-${arch2}`;
|
|
425
|
+
}
|
|
426
|
+
function getLoadablePath() {
|
|
427
|
+
if (!validPlatform(import_node_process.platform, import_node_process.arch)) {
|
|
428
|
+
throw new Error(
|
|
429
|
+
invalidPlatformErrorMessage
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
const packageName = platformPackageName(import_node_process.platform, import_node_process.arch);
|
|
433
|
+
const loadablePath = (0, import_node_path.join)(
|
|
434
|
+
(0, import_node_url.fileURLToPath)(new URL((0, import_node_path.join)("."), import_meta.url)),
|
|
435
|
+
"..",
|
|
436
|
+
packageName,
|
|
437
|
+
`${ENTRYPOINT_BASE_NAME}.${extensionSuffix(import_node_process.platform)}`
|
|
438
|
+
);
|
|
439
|
+
if (!(0, import_node_fs.statSync)(loadablePath, { throwIfNoEntry: false })) {
|
|
440
|
+
throw new Error(extensionNotFoundErrorMessage(packageName));
|
|
441
|
+
}
|
|
442
|
+
return loadablePath;
|
|
443
|
+
}
|
|
444
|
+
function load(db) {
|
|
445
|
+
db.loadExtension(getLoadablePath());
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// ../../core/dist/storage/sqlite-vec.js
|
|
449
|
+
var SQLiteVecStorage = class _SQLiteVecStorage {
|
|
401
450
|
db;
|
|
402
|
-
|
|
403
|
-
tableName = "memories";
|
|
451
|
+
tableName = "memory_vectors";
|
|
404
452
|
dimensions = 384;
|
|
405
453
|
constructor(db) {
|
|
406
454
|
this.db = db;
|
|
407
455
|
}
|
|
408
456
|
static async create(dbPath) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
457
|
+
let actualPath = dbPath;
|
|
458
|
+
if (dbPath.endsWith("vectors") || dbPath.endsWith("vectors/")) {
|
|
459
|
+
actualPath = dbPath.replace(/\/?$/, ".db");
|
|
460
|
+
}
|
|
461
|
+
const db = new import_better_sqlite32.default(actualPath);
|
|
462
|
+
load(db);
|
|
463
|
+
const storage = new _SQLiteVecStorage(db);
|
|
464
|
+
storage.initialize();
|
|
412
465
|
return storage;
|
|
413
466
|
}
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
467
|
+
initialize() {
|
|
468
|
+
this.db.exec(`
|
|
469
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS ${this.tableName} USING vec0(
|
|
470
|
+
id TEXT PRIMARY KEY,
|
|
471
|
+
vector FLOAT[${this.dimensions}]
|
|
472
|
+
)
|
|
473
|
+
`);
|
|
419
474
|
}
|
|
420
475
|
async insertVector(id, vector) {
|
|
421
476
|
if (vector.length !== this.dimensions) {
|
|
422
477
|
throw new Error(`Vector must have ${this.dimensions} dimensions, got ${vector.length}`);
|
|
423
478
|
}
|
|
424
|
-
const
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
479
|
+
const float32 = new Float32Array(vector);
|
|
480
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
481
|
+
const stmt = this.db.prepare(`
|
|
482
|
+
INSERT OR REPLACE INTO ${this.tableName} (id, vector)
|
|
483
|
+
VALUES (?, ?)
|
|
484
|
+
`);
|
|
485
|
+
stmt.run(id, vectorBuffer);
|
|
431
486
|
}
|
|
432
487
|
async insertVectors(items) {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
488
|
+
const stmt = this.db.prepare(`
|
|
489
|
+
INSERT OR REPLACE INTO ${this.tableName} (id, vector)
|
|
490
|
+
VALUES (?, ?)
|
|
491
|
+
`);
|
|
492
|
+
const insertMany = this.db.transaction((items2) => {
|
|
493
|
+
for (const item of items2) {
|
|
494
|
+
if (item.vector.length !== this.dimensions) {
|
|
495
|
+
throw new Error(`Vector must have ${this.dimensions} dimensions, got ${item.vector.length}`);
|
|
496
|
+
}
|
|
497
|
+
const float32 = new Float32Array(item.vector);
|
|
498
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
499
|
+
stmt.run(item.id, vectorBuffer);
|
|
436
500
|
}
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
this.table = await this.db.createTable(this.tableName, items);
|
|
440
|
-
} else {
|
|
441
|
-
await this.table.add(items);
|
|
442
|
-
}
|
|
443
|
-
await this.optimize();
|
|
501
|
+
});
|
|
502
|
+
insertMany(items);
|
|
444
503
|
}
|
|
445
504
|
async search(vector, limit = 10) {
|
|
446
|
-
if (
|
|
447
|
-
|
|
505
|
+
if (vector.length !== this.dimensions) {
|
|
506
|
+
throw new Error(`Query vector must have ${this.dimensions} dimensions, got ${vector.length}`);
|
|
448
507
|
}
|
|
449
508
|
const effectiveLimit = limit > 0 ? limit : 100;
|
|
450
|
-
const
|
|
451
|
-
|
|
509
|
+
const float32 = new Float32Array(vector);
|
|
510
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
511
|
+
const stmt = this.db.prepare(`
|
|
512
|
+
SELECT id, distance
|
|
513
|
+
FROM ${this.tableName}
|
|
514
|
+
WHERE vector MATCH ?
|
|
515
|
+
ORDER BY distance
|
|
516
|
+
LIMIT ?
|
|
517
|
+
`);
|
|
518
|
+
const rows = stmt.all(vectorBuffer, effectiveLimit);
|
|
519
|
+
return rows.map((row) => ({
|
|
452
520
|
id: row.id,
|
|
453
|
-
score: 1
|
|
454
|
-
// Convert distance to similarity
|
|
521
|
+
score: 1 / (1 + row.distance)
|
|
455
522
|
}));
|
|
456
523
|
}
|
|
457
524
|
async deleteVector(id) {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
const sanitizedId = id.replace(/'/g, "''");
|
|
461
|
-
await this.table.delete(`id = '${sanitizedId}'`);
|
|
525
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE id = ?`);
|
|
526
|
+
stmt.run(id);
|
|
462
527
|
}
|
|
463
528
|
async getVectorCount() {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
return
|
|
529
|
+
const stmt = this.db.prepare(`SELECT COUNT(*) as count FROM ${this.tableName}`);
|
|
530
|
+
const result = stmt.get();
|
|
531
|
+
return result.count;
|
|
467
532
|
}
|
|
468
533
|
async getVectorsByIds(ids) {
|
|
469
534
|
const result = /* @__PURE__ */ new Map();
|
|
470
|
-
if (
|
|
535
|
+
if (ids.length === 0)
|
|
471
536
|
return result;
|
|
472
537
|
const BATCH_SIZE = 100;
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
538
|
+
for (let i = 0; i < ids.length; i += BATCH_SIZE) {
|
|
539
|
+
const batch = ids.slice(i, i + BATCH_SIZE);
|
|
540
|
+
const placeholders = batch.map(() => "?").join(",");
|
|
541
|
+
const stmt = this.db.prepare(`
|
|
542
|
+
SELECT id, vector FROM ${this.tableName}
|
|
543
|
+
WHERE id IN (${placeholders})
|
|
544
|
+
`);
|
|
545
|
+
const rows = stmt.all(...batch);
|
|
546
|
+
for (const row of rows) {
|
|
547
|
+
const vector = Array.from(new Float32Array(row.vector));
|
|
548
|
+
result.set(row.id, vector);
|
|
482
549
|
}
|
|
483
|
-
} catch {
|
|
484
550
|
}
|
|
485
551
|
return result;
|
|
486
552
|
}
|
|
487
553
|
async close() {
|
|
554
|
+
this.db.close();
|
|
488
555
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
*
|
|
494
|
-
* @param cleanupOlderThan - Date before which old versions should be pruned (default: now)
|
|
495
|
-
*/
|
|
496
|
-
async optimize(cleanupOlderThan) {
|
|
497
|
-
if (!this.table)
|
|
498
|
-
return null;
|
|
499
|
-
try {
|
|
500
|
-
const table = this.table;
|
|
501
|
-
const stats = await table.optimize({ cleanupOlderThan: cleanupOlderThan ?? /* @__PURE__ */ new Date() });
|
|
502
|
-
return {
|
|
503
|
-
compacted: stats?.compaction?.filesRemoved ?? 0,
|
|
504
|
-
pruned: stats?.prune?.versionsRemoved ?? 0
|
|
505
|
-
};
|
|
506
|
-
} catch (error) {
|
|
507
|
-
console.error("[memextend] LanceDB optimize failed:", error);
|
|
508
|
-
return null;
|
|
509
|
-
}
|
|
556
|
+
// No optimize needed - SQLite handles this automatically!
|
|
557
|
+
async optimize() {
|
|
558
|
+
this.db.exec("VACUUM");
|
|
559
|
+
return { compacted: 0, pruned: 0 };
|
|
510
560
|
}
|
|
511
561
|
};
|
|
512
562
|
|
|
@@ -780,7 +830,7 @@ async function main() {
|
|
|
780
830
|
const workspace = options.workspace ? (0, import_path2.resolve)(options.workspace) : process.cwd();
|
|
781
831
|
const projectId = getProjectId2(workspace);
|
|
782
832
|
const sqlite = new SQLiteStorage(DB_PATH);
|
|
783
|
-
const
|
|
833
|
+
const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
784
834
|
const embedder = await createEmbedFunction(MODELS_PATH);
|
|
785
835
|
try {
|
|
786
836
|
const project = sqlite.getProject(projectId);
|
|
@@ -805,7 +855,7 @@ async function main() {
|
|
|
805
855
|
};
|
|
806
856
|
sqlite.insertMemory(memory);
|
|
807
857
|
const vector = await embedder.embed(content);
|
|
808
|
-
await
|
|
858
|
+
await vectorStore.insertVector(memoryId, vector);
|
|
809
859
|
if (!options.quiet) {
|
|
810
860
|
console.log(`Memory captured successfully!`);
|
|
811
861
|
console.log(` ID: ${memoryId}`);
|
|
@@ -815,7 +865,7 @@ async function main() {
|
|
|
815
865
|
}
|
|
816
866
|
} finally {
|
|
817
867
|
sqlite.close();
|
|
818
|
-
await
|
|
868
|
+
await vectorStore.close();
|
|
819
869
|
await embedder.close();
|
|
820
870
|
}
|
|
821
871
|
}
|
package/dist/cli/capture.js
CHANGED
|
@@ -21,7 +21,7 @@ import { readFile } from 'fs/promises';
|
|
|
21
21
|
import { join, basename, resolve } from 'path';
|
|
22
22
|
import { homedir } from 'os';
|
|
23
23
|
import { execSync } from 'child_process';
|
|
24
|
-
import { SQLiteStorage,
|
|
24
|
+
import { SQLiteStorage, SQLiteVecStorage, createEmbedFunction } from '@memextend/core';
|
|
25
25
|
const MEMEXTEND_DIR = join(homedir(), '.memextend');
|
|
26
26
|
const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
|
|
27
27
|
const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
|
|
@@ -170,7 +170,7 @@ async function main() {
|
|
|
170
170
|
const projectId = getProjectId(workspace);
|
|
171
171
|
// Initialize storage
|
|
172
172
|
const sqlite = new SQLiteStorage(DB_PATH);
|
|
173
|
-
const
|
|
173
|
+
const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
174
174
|
const embedder = await createEmbedFunction(MODELS_PATH);
|
|
175
175
|
try {
|
|
176
176
|
// Ensure project is registered
|
|
@@ -199,7 +199,7 @@ async function main() {
|
|
|
199
199
|
sqlite.insertMemory(memory);
|
|
200
200
|
// Generate and store embedding
|
|
201
201
|
const vector = await embedder.embed(content);
|
|
202
|
-
await
|
|
202
|
+
await vectorStore.insertVector(memoryId, vector);
|
|
203
203
|
if (!options.quiet) {
|
|
204
204
|
console.log(`Memory captured successfully!`);
|
|
205
205
|
console.log(` ID: ${memoryId}`);
|
|
@@ -211,7 +211,7 @@ async function main() {
|
|
|
211
211
|
finally {
|
|
212
212
|
// Cleanup
|
|
213
213
|
sqlite.close();
|
|
214
|
-
await
|
|
214
|
+
await vectorStore.close();
|
|
215
215
|
await embedder.close();
|
|
216
216
|
}
|
|
217
217
|
}
|
package/dist/cli/capture.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/cli/capture.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,8CAA8C;AAE9C;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EACL,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/cli/capture.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/inject.cjs
CHANGED
|
@@ -394,118 +394,168 @@ var SQLiteStorage = class {
|
|
|
394
394
|
}
|
|
395
395
|
};
|
|
396
396
|
|
|
397
|
-
// ../../core/dist/storage/
|
|
398
|
-
var
|
|
399
|
-
|
|
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
|
-
|
|
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
|
-
|
|
409
|
-
|
|
410
|
-
|
|
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
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
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
|
-
|
|
433
|
-
|
|
434
|
-
|
|
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
|
-
|
|
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 (
|
|
446
|
-
|
|
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
|
|
450
|
-
|
|
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
|
|
453
|
-
// Convert distance to similarity
|
|
520
|
+
score: 1 / (1 + row.distance)
|
|
454
521
|
}));
|
|
455
522
|
}
|
|
456
523
|
async deleteVector(id) {
|
|
457
|
-
|
|
458
|
-
|
|
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
|
-
|
|
464
|
-
|
|
465
|
-
return
|
|
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 (
|
|
534
|
+
if (ids.length === 0)
|
|
470
535
|
return result;
|
|
471
536
|
const BATCH_SIZE = 100;
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
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
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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
|
|
|
@@ -641,12 +691,12 @@ async function createEmbedFunction(modelsDir) {
|
|
|
641
691
|
// ../../core/dist/memory/retrieve.js
|
|
642
692
|
var MemoryRetriever = class {
|
|
643
693
|
sqlite;
|
|
644
|
-
|
|
694
|
+
vectorStore;
|
|
645
695
|
embed;
|
|
646
696
|
options;
|
|
647
|
-
constructor(sqlite,
|
|
697
|
+
constructor(sqlite, vectorStore, embed, options = {}) {
|
|
648
698
|
this.sqlite = sqlite;
|
|
649
|
-
this.
|
|
699
|
+
this.vectorStore = vectorStore;
|
|
650
700
|
this.embed = embed;
|
|
651
701
|
this.options = {
|
|
652
702
|
defaultLimit: options.defaultLimit ?? 0,
|
|
@@ -664,12 +714,12 @@ var MemoryRetriever = class {
|
|
|
664
714
|
return this.sqlite.searchFTS(query, limit);
|
|
665
715
|
}
|
|
666
716
|
/**
|
|
667
|
-
* Vector similarity search
|
|
717
|
+
* Vector similarity search
|
|
668
718
|
*/
|
|
669
719
|
async vectorSearch(query, options = {}) {
|
|
670
720
|
const limit = options.limit ?? this.options.defaultLimit;
|
|
671
721
|
const queryVector = await this.embed(query);
|
|
672
|
-
const vectorResults = await this.
|
|
722
|
+
const vectorResults = await this.vectorStore.search(queryVector, limit * 2);
|
|
673
723
|
const results = [];
|
|
674
724
|
for (const vr of vectorResults) {
|
|
675
725
|
const memory = this.sqlite.getMemory(vr.id);
|
|
@@ -972,10 +1022,10 @@ async function main() {
|
|
|
972
1022
|
const workspace = options.workspace ? (0, import_path2.resolve)(options.workspace) : process.cwd();
|
|
973
1023
|
const projectId = getProjectId2(workspace);
|
|
974
1024
|
const sqlite = new SQLiteStorage(DB_PATH);
|
|
975
|
-
const
|
|
1025
|
+
const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
976
1026
|
const embedder = await createEmbedFunction(MODELS_PATH);
|
|
977
1027
|
try {
|
|
978
|
-
const retriever = new MemoryRetriever(sqlite,
|
|
1028
|
+
const retriever = new MemoryRetriever(sqlite, vectorStore, embedder.embedQuery, {
|
|
979
1029
|
defaultLimit: options.limit ?? 0,
|
|
980
1030
|
defaultRecentDays: options.days ?? 0
|
|
981
1031
|
});
|
|
@@ -1037,7 +1087,7 @@ No memories found. This might be a new project.
|
|
|
1037
1087
|
console.log(output);
|
|
1038
1088
|
} finally {
|
|
1039
1089
|
sqlite.close();
|
|
1040
|
-
await
|
|
1090
|
+
await vectorStore.close();
|
|
1041
1091
|
await embedder.close();
|
|
1042
1092
|
}
|
|
1043
1093
|
}
|
package/dist/cli/inject.js
CHANGED
|
@@ -21,7 +21,7 @@ import { existsSync } from 'fs';
|
|
|
21
21
|
import { join, basename, resolve } from 'path';
|
|
22
22
|
import { homedir } from 'os';
|
|
23
23
|
import { execSync } from 'child_process';
|
|
24
|
-
import { SQLiteStorage,
|
|
24
|
+
import { SQLiteStorage, SQLiteVecStorage, MemoryRetriever, createEmbedFunction, formatContextForInjection } from '@memextend/core';
|
|
25
25
|
const MEMEXTEND_DIR = join(homedir(), '.memextend');
|
|
26
26
|
const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
|
|
27
27
|
const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
|
|
@@ -165,10 +165,10 @@ async function main() {
|
|
|
165
165
|
const projectId = getProjectId(workspace);
|
|
166
166
|
// Initialize storage
|
|
167
167
|
const sqlite = new SQLiteStorage(DB_PATH);
|
|
168
|
-
const
|
|
168
|
+
const vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
169
169
|
const embedder = await createEmbedFunction(MODELS_PATH);
|
|
170
170
|
try {
|
|
171
|
-
const retriever = new MemoryRetriever(sqlite,
|
|
171
|
+
const retriever = new MemoryRetriever(sqlite, vectorStore, embedder.embedQuery, {
|
|
172
172
|
defaultLimit: options.limit ?? 0,
|
|
173
173
|
defaultRecentDays: options.days ?? 0,
|
|
174
174
|
});
|
|
@@ -237,7 +237,7 @@ async function main() {
|
|
|
237
237
|
finally {
|
|
238
238
|
// Cleanup
|
|
239
239
|
sqlite.close();
|
|
240
|
-
await
|
|
240
|
+
await vectorStore.close();
|
|
241
241
|
await embedder.close();
|
|
242
242
|
}
|
|
243
243
|
}
|
package/dist/cli/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/cli/inject.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,8CAA8C;AAE9C;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EACL,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/cli/inject.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.cjs
CHANGED
|
@@ -14087,118 +14087,168 @@ var SQLiteStorage = class {
|
|
|
14087
14087
|
}
|
|
14088
14088
|
};
|
|
14089
14089
|
|
|
14090
|
-
// ../../core/dist/storage/
|
|
14091
|
-
var
|
|
14092
|
-
|
|
14090
|
+
// ../../core/dist/storage/sqlite-vec.js
|
|
14091
|
+
var import_better_sqlite32 = __toESM(require("better-sqlite3"), 1);
|
|
14092
|
+
|
|
14093
|
+
// ../../../node_modules/sqlite-vec/index.mjs
|
|
14094
|
+
var import_node_path = require("node:path");
|
|
14095
|
+
var import_node_url = require("node:url");
|
|
14096
|
+
var import_node_process2 = require("node:process");
|
|
14097
|
+
var import_node_fs = require("node:fs");
|
|
14098
|
+
var import_meta = {};
|
|
14099
|
+
var BASE_PACKAGE_NAME = "sqlite-vec";
|
|
14100
|
+
var ENTRYPOINT_BASE_NAME = "vec0";
|
|
14101
|
+
var supportedPlatforms = [["macos", "aarch64"], ["macos", "x86_64"], ["windows", "x86_64"], ["linux", "x86_64"], ["linux", "aarch64"]];
|
|
14102
|
+
var invalidPlatformErrorMessage = `Unsupported platform for ${BASE_PACKAGE_NAME}, on a ${import_node_process2.platform}-${import_node_process2.arch} machine. Supported platforms are (${supportedPlatforms.map(([p, a]) => `${p}-${a}`).join(",")}). Consult the ${BASE_PACKAGE_NAME} NPM package README for details.`;
|
|
14103
|
+
var extensionNotFoundErrorMessage = (packageName) => `Loadble extension for ${BASE_PACKAGE_NAME} not found. Was the ${packageName} package installed?`;
|
|
14104
|
+
function validPlatform(platform2, arch2) {
|
|
14105
|
+
return supportedPlatforms.find(([p, a]) => platform2 == p && arch2 === a) !== null;
|
|
14106
|
+
}
|
|
14107
|
+
function extensionSuffix(platform2) {
|
|
14108
|
+
if (platform2 === "win32")
|
|
14109
|
+
return "dll";
|
|
14110
|
+
if (platform2 === "darwin")
|
|
14111
|
+
return "dylib";
|
|
14112
|
+
return "so";
|
|
14113
|
+
}
|
|
14114
|
+
function platformPackageName(platform2, arch2) {
|
|
14115
|
+
const os = platform2 === "win32" ? "windows" : platform2;
|
|
14116
|
+
return `${BASE_PACKAGE_NAME}-${os}-${arch2}`;
|
|
14117
|
+
}
|
|
14118
|
+
function getLoadablePath() {
|
|
14119
|
+
if (!validPlatform(import_node_process2.platform, import_node_process2.arch)) {
|
|
14120
|
+
throw new Error(
|
|
14121
|
+
invalidPlatformErrorMessage
|
|
14122
|
+
);
|
|
14123
|
+
}
|
|
14124
|
+
const packageName = platformPackageName(import_node_process2.platform, import_node_process2.arch);
|
|
14125
|
+
const loadablePath = (0, import_node_path.join)(
|
|
14126
|
+
(0, import_node_url.fileURLToPath)(new URL((0, import_node_path.join)("."), import_meta.url)),
|
|
14127
|
+
"..",
|
|
14128
|
+
packageName,
|
|
14129
|
+
`${ENTRYPOINT_BASE_NAME}.${extensionSuffix(import_node_process2.platform)}`
|
|
14130
|
+
);
|
|
14131
|
+
if (!(0, import_node_fs.statSync)(loadablePath, { throwIfNoEntry: false })) {
|
|
14132
|
+
throw new Error(extensionNotFoundErrorMessage(packageName));
|
|
14133
|
+
}
|
|
14134
|
+
return loadablePath;
|
|
14135
|
+
}
|
|
14136
|
+
function load(db) {
|
|
14137
|
+
db.loadExtension(getLoadablePath());
|
|
14138
|
+
}
|
|
14139
|
+
|
|
14140
|
+
// ../../core/dist/storage/sqlite-vec.js
|
|
14141
|
+
var SQLiteVecStorage = class _SQLiteVecStorage {
|
|
14093
14142
|
db;
|
|
14094
|
-
|
|
14095
|
-
tableName = "memories";
|
|
14143
|
+
tableName = "memory_vectors";
|
|
14096
14144
|
dimensions = 384;
|
|
14097
14145
|
constructor(db) {
|
|
14098
14146
|
this.db = db;
|
|
14099
14147
|
}
|
|
14100
14148
|
static async create(dbPath) {
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14149
|
+
let actualPath = dbPath;
|
|
14150
|
+
if (dbPath.endsWith("vectors") || dbPath.endsWith("vectors/")) {
|
|
14151
|
+
actualPath = dbPath.replace(/\/?$/, ".db");
|
|
14152
|
+
}
|
|
14153
|
+
const db = new import_better_sqlite32.default(actualPath);
|
|
14154
|
+
load(db);
|
|
14155
|
+
const storage = new _SQLiteVecStorage(db);
|
|
14156
|
+
storage.initialize();
|
|
14104
14157
|
return storage;
|
|
14105
14158
|
}
|
|
14106
|
-
|
|
14107
|
-
|
|
14108
|
-
|
|
14109
|
-
|
|
14110
|
-
|
|
14159
|
+
initialize() {
|
|
14160
|
+
this.db.exec(`
|
|
14161
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS ${this.tableName} USING vec0(
|
|
14162
|
+
id TEXT PRIMARY KEY,
|
|
14163
|
+
vector FLOAT[${this.dimensions}]
|
|
14164
|
+
)
|
|
14165
|
+
`);
|
|
14111
14166
|
}
|
|
14112
14167
|
async insertVector(id, vector) {
|
|
14113
14168
|
if (vector.length !== this.dimensions) {
|
|
14114
14169
|
throw new Error(`Vector must have ${this.dimensions} dimensions, got ${vector.length}`);
|
|
14115
14170
|
}
|
|
14116
|
-
const
|
|
14117
|
-
|
|
14118
|
-
|
|
14119
|
-
|
|
14120
|
-
|
|
14121
|
-
|
|
14122
|
-
|
|
14171
|
+
const float32 = new Float32Array(vector);
|
|
14172
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
14173
|
+
const stmt = this.db.prepare(`
|
|
14174
|
+
INSERT OR REPLACE INTO ${this.tableName} (id, vector)
|
|
14175
|
+
VALUES (?, ?)
|
|
14176
|
+
`);
|
|
14177
|
+
stmt.run(id, vectorBuffer);
|
|
14123
14178
|
}
|
|
14124
14179
|
async insertVectors(items) {
|
|
14125
|
-
|
|
14126
|
-
|
|
14127
|
-
|
|
14180
|
+
const stmt = this.db.prepare(`
|
|
14181
|
+
INSERT OR REPLACE INTO ${this.tableName} (id, vector)
|
|
14182
|
+
VALUES (?, ?)
|
|
14183
|
+
`);
|
|
14184
|
+
const insertMany = this.db.transaction((items2) => {
|
|
14185
|
+
for (const item of items2) {
|
|
14186
|
+
if (item.vector.length !== this.dimensions) {
|
|
14187
|
+
throw new Error(`Vector must have ${this.dimensions} dimensions, got ${item.vector.length}`);
|
|
14188
|
+
}
|
|
14189
|
+
const float32 = new Float32Array(item.vector);
|
|
14190
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
14191
|
+
stmt.run(item.id, vectorBuffer);
|
|
14128
14192
|
}
|
|
14129
|
-
}
|
|
14130
|
-
|
|
14131
|
-
this.table = await this.db.createTable(this.tableName, items);
|
|
14132
|
-
} else {
|
|
14133
|
-
await this.table.add(items);
|
|
14134
|
-
}
|
|
14135
|
-
await this.optimize();
|
|
14193
|
+
});
|
|
14194
|
+
insertMany(items);
|
|
14136
14195
|
}
|
|
14137
14196
|
async search(vector, limit = 10) {
|
|
14138
|
-
if (
|
|
14139
|
-
|
|
14197
|
+
if (vector.length !== this.dimensions) {
|
|
14198
|
+
throw new Error(`Query vector must have ${this.dimensions} dimensions, got ${vector.length}`);
|
|
14140
14199
|
}
|
|
14141
14200
|
const effectiveLimit = limit > 0 ? limit : 100;
|
|
14142
|
-
const
|
|
14143
|
-
|
|
14201
|
+
const float32 = new Float32Array(vector);
|
|
14202
|
+
const vectorBuffer = Buffer.from(float32.buffer);
|
|
14203
|
+
const stmt = this.db.prepare(`
|
|
14204
|
+
SELECT id, distance
|
|
14205
|
+
FROM ${this.tableName}
|
|
14206
|
+
WHERE vector MATCH ?
|
|
14207
|
+
ORDER BY distance
|
|
14208
|
+
LIMIT ?
|
|
14209
|
+
`);
|
|
14210
|
+
const rows = stmt.all(vectorBuffer, effectiveLimit);
|
|
14211
|
+
return rows.map((row) => ({
|
|
14144
14212
|
id: row.id,
|
|
14145
|
-
score: 1
|
|
14146
|
-
// Convert distance to similarity
|
|
14213
|
+
score: 1 / (1 + row.distance)
|
|
14147
14214
|
}));
|
|
14148
14215
|
}
|
|
14149
14216
|
async deleteVector(id) {
|
|
14150
|
-
|
|
14151
|
-
|
|
14152
|
-
const sanitizedId = id.replace(/'/g, "''");
|
|
14153
|
-
await this.table.delete(`id = '${sanitizedId}'`);
|
|
14217
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE id = ?`);
|
|
14218
|
+
stmt.run(id);
|
|
14154
14219
|
}
|
|
14155
14220
|
async getVectorCount() {
|
|
14156
|
-
|
|
14157
|
-
|
|
14158
|
-
return
|
|
14221
|
+
const stmt = this.db.prepare(`SELECT COUNT(*) as count FROM ${this.tableName}`);
|
|
14222
|
+
const result = stmt.get();
|
|
14223
|
+
return result.count;
|
|
14159
14224
|
}
|
|
14160
14225
|
async getVectorsByIds(ids) {
|
|
14161
14226
|
const result = /* @__PURE__ */ new Map();
|
|
14162
|
-
if (
|
|
14227
|
+
if (ids.length === 0)
|
|
14163
14228
|
return result;
|
|
14164
14229
|
const BATCH_SIZE = 100;
|
|
14165
|
-
|
|
14166
|
-
|
|
14167
|
-
|
|
14168
|
-
|
|
14169
|
-
|
|
14170
|
-
|
|
14171
|
-
|
|
14172
|
-
|
|
14173
|
-
|
|
14230
|
+
for (let i = 0; i < ids.length; i += BATCH_SIZE) {
|
|
14231
|
+
const batch = ids.slice(i, i + BATCH_SIZE);
|
|
14232
|
+
const placeholders = batch.map(() => "?").join(",");
|
|
14233
|
+
const stmt = this.db.prepare(`
|
|
14234
|
+
SELECT id, vector FROM ${this.tableName}
|
|
14235
|
+
WHERE id IN (${placeholders})
|
|
14236
|
+
`);
|
|
14237
|
+
const rows = stmt.all(...batch);
|
|
14238
|
+
for (const row of rows) {
|
|
14239
|
+
const vector = Array.from(new Float32Array(row.vector));
|
|
14240
|
+
result.set(row.id, vector);
|
|
14174
14241
|
}
|
|
14175
|
-
} catch {
|
|
14176
14242
|
}
|
|
14177
14243
|
return result;
|
|
14178
14244
|
}
|
|
14179
14245
|
async close() {
|
|
14246
|
+
this.db.close();
|
|
14180
14247
|
}
|
|
14181
|
-
|
|
14182
|
-
|
|
14183
|
-
|
|
14184
|
-
|
|
14185
|
-
*
|
|
14186
|
-
* @param cleanupOlderThan - Date before which old versions should be pruned (default: now)
|
|
14187
|
-
*/
|
|
14188
|
-
async optimize(cleanupOlderThan) {
|
|
14189
|
-
if (!this.table)
|
|
14190
|
-
return null;
|
|
14191
|
-
try {
|
|
14192
|
-
const table = this.table;
|
|
14193
|
-
const stats = await table.optimize({ cleanupOlderThan: cleanupOlderThan ?? /* @__PURE__ */ new Date() });
|
|
14194
|
-
return {
|
|
14195
|
-
compacted: stats?.compaction?.filesRemoved ?? 0,
|
|
14196
|
-
pruned: stats?.prune?.versionsRemoved ?? 0
|
|
14197
|
-
};
|
|
14198
|
-
} catch (error2) {
|
|
14199
|
-
console.error("[memextend] LanceDB optimize failed:", error2);
|
|
14200
|
-
return null;
|
|
14201
|
-
}
|
|
14248
|
+
// No optimize needed - SQLite handles this automatically!
|
|
14249
|
+
async optimize() {
|
|
14250
|
+
this.db.exec("VACUUM");
|
|
14251
|
+
return { compacted: 0, pruned: 0 };
|
|
14202
14252
|
}
|
|
14203
14253
|
};
|
|
14204
14254
|
|
|
@@ -14334,12 +14384,12 @@ async function createEmbedFunction(modelsDir) {
|
|
|
14334
14384
|
// ../../core/dist/memory/retrieve.js
|
|
14335
14385
|
var MemoryRetriever = class {
|
|
14336
14386
|
sqlite;
|
|
14337
|
-
|
|
14387
|
+
vectorStore;
|
|
14338
14388
|
embed;
|
|
14339
14389
|
options;
|
|
14340
|
-
constructor(sqlite2,
|
|
14390
|
+
constructor(sqlite2, vectorStore2, embed, options = {}) {
|
|
14341
14391
|
this.sqlite = sqlite2;
|
|
14342
|
-
this.
|
|
14392
|
+
this.vectorStore = vectorStore2;
|
|
14343
14393
|
this.embed = embed;
|
|
14344
14394
|
this.options = {
|
|
14345
14395
|
defaultLimit: options.defaultLimit ?? 0,
|
|
@@ -14357,12 +14407,12 @@ var MemoryRetriever = class {
|
|
|
14357
14407
|
return this.sqlite.searchFTS(query, limit);
|
|
14358
14408
|
}
|
|
14359
14409
|
/**
|
|
14360
|
-
* Vector similarity search
|
|
14410
|
+
* Vector similarity search
|
|
14361
14411
|
*/
|
|
14362
14412
|
async vectorSearch(query, options = {}) {
|
|
14363
14413
|
const limit = options.limit ?? this.options.defaultLimit;
|
|
14364
14414
|
const queryVector = await this.embed(query);
|
|
14365
|
-
const vectorResults = await this.
|
|
14415
|
+
const vectorResults = await this.vectorStore.search(queryVector, limit * 2);
|
|
14366
14416
|
const results = [];
|
|
14367
14417
|
for (const vr of vectorResults) {
|
|
14368
14418
|
const memory = this.sqlite.getMemory(vr.id);
|
|
@@ -14552,20 +14602,20 @@ var DB_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "memextend.db");
|
|
|
14552
14602
|
var VECTORS_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "vectors");
|
|
14553
14603
|
var MODELS_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "models");
|
|
14554
14604
|
var sqlite = null;
|
|
14555
|
-
var
|
|
14605
|
+
var vectorStore = null;
|
|
14556
14606
|
var retriever = null;
|
|
14557
14607
|
var embedder = null;
|
|
14558
14608
|
async function getStorage() {
|
|
14559
|
-
if (!sqlite || !
|
|
14609
|
+
if (!sqlite || !vectorStore || !retriever || !embedder) {
|
|
14560
14610
|
if (!(0, import_fs2.existsSync)(DB_PATH)) {
|
|
14561
14611
|
throw new Error("memextend not initialized. Run `memextend init` first.");
|
|
14562
14612
|
}
|
|
14563
14613
|
sqlite = new SQLiteStorage(DB_PATH);
|
|
14564
|
-
|
|
14614
|
+
vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
14565
14615
|
embedder = await createEmbedFunction(MODELS_PATH);
|
|
14566
|
-
retriever = new MemoryRetriever(sqlite,
|
|
14616
|
+
retriever = new MemoryRetriever(sqlite, vectorStore, embedder.embedQuery);
|
|
14567
14617
|
}
|
|
14568
|
-
return { sqlite,
|
|
14618
|
+
return { sqlite, vectorStore, retriever, embedder };
|
|
14569
14619
|
}
|
|
14570
14620
|
function getCurrentWorkspace() {
|
|
14571
14621
|
return process.env.CURSOR_WORKSPACE_PATH || process.env.VSCODE_WORKSPACE_PATH || process.env.PWD || process.cwd();
|
|
@@ -14788,7 +14838,7 @@ ${preview}`;
|
|
|
14788
14838
|
${formatted}` }] };
|
|
14789
14839
|
}
|
|
14790
14840
|
case "memextend_save": {
|
|
14791
|
-
const { sqlite: sqlite2,
|
|
14841
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2, embedder: embedder2 } = await getStorage();
|
|
14792
14842
|
const content = args?.content;
|
|
14793
14843
|
const tags = args?.tags ?? [];
|
|
14794
14844
|
if (!content || content.length < 10) {
|
|
@@ -14820,7 +14870,7 @@ ${content}` : content;
|
|
|
14820
14870
|
metadata: tags.length > 0 ? { tags } : null
|
|
14821
14871
|
});
|
|
14822
14872
|
const vector = await embedder2.embed(content);
|
|
14823
|
-
await
|
|
14873
|
+
await vectorStore2.insertVector(memoryId, vector);
|
|
14824
14874
|
return { content: [{ type: "text", text: `Memory saved successfully!
|
|
14825
14875
|
ID: ${memoryId}
|
|
14826
14876
|
Project: ${(0, import_path2.basename)(workspace)}` }] };
|
|
@@ -14859,23 +14909,23 @@ Project: ${(0, import_path2.basename)(workspace)}` }] };
|
|
|
14859
14909
|
return { content: [{ type: "text", text: formatted }] };
|
|
14860
14910
|
}
|
|
14861
14911
|
case "memextend_forget": {
|
|
14862
|
-
const { sqlite: sqlite2,
|
|
14912
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2 } = await getStorage();
|
|
14863
14913
|
const memoryId = args?.memoryId;
|
|
14864
14914
|
if (!memoryId) {
|
|
14865
14915
|
return { content: [{ type: "text", text: "Memory ID is required." }], isError: true };
|
|
14866
14916
|
}
|
|
14867
14917
|
const deleted = sqlite2.deleteMemory(memoryId);
|
|
14868
14918
|
if (deleted) {
|
|
14869
|
-
await
|
|
14919
|
+
await vectorStore2.deleteVector(memoryId);
|
|
14870
14920
|
return { content: [{ type: "text", text: `Memory ${memoryId} deleted successfully.` }] };
|
|
14871
14921
|
} else {
|
|
14872
14922
|
return { content: [{ type: "text", text: `Memory ${memoryId} not found.` }] };
|
|
14873
14923
|
}
|
|
14874
14924
|
}
|
|
14875
14925
|
case "memextend_status": {
|
|
14876
|
-
const { sqlite: sqlite2,
|
|
14926
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2, embedder: embedder2 } = await getStorage();
|
|
14877
14927
|
const memoryCount = sqlite2.getMemoryCount();
|
|
14878
|
-
const vectorCount = await
|
|
14928
|
+
const vectorCount = await vectorStore2.getVectorCount();
|
|
14879
14929
|
const projectMemories = sqlite2.getAllMemories(projectId, 1e3);
|
|
14880
14930
|
const projectMemoryCount = projectMemories.length;
|
|
14881
14931
|
return {
|
package/dist/mcp/server.js
CHANGED
|
@@ -7,27 +7,27 @@ import { randomUUID } from 'crypto';
|
|
|
7
7
|
import { existsSync } from 'fs';
|
|
8
8
|
import { join, basename } from 'path';
|
|
9
9
|
import { homedir } from 'os';
|
|
10
|
-
import { SQLiteStorage,
|
|
10
|
+
import { SQLiteStorage, SQLiteVecStorage, MemoryRetriever, createEmbedFunction, formatContextForInjection, getProjectId } from '@memextend/core';
|
|
11
11
|
const MEMEXTEND_DIR = join(homedir(), '.memextend');
|
|
12
12
|
const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
|
|
13
13
|
const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
|
|
14
14
|
const MODELS_PATH = join(MEMEXTEND_DIR, 'models');
|
|
15
15
|
// Lazy-loaded storage instances
|
|
16
16
|
let sqlite = null;
|
|
17
|
-
let
|
|
17
|
+
let vectorStore = null;
|
|
18
18
|
let retriever = null;
|
|
19
19
|
let embedder = null;
|
|
20
20
|
async function getStorage() {
|
|
21
|
-
if (!sqlite || !
|
|
21
|
+
if (!sqlite || !vectorStore || !retriever || !embedder) {
|
|
22
22
|
if (!existsSync(DB_PATH)) {
|
|
23
23
|
throw new Error('memextend not initialized. Run `memextend init` first.');
|
|
24
24
|
}
|
|
25
25
|
sqlite = new SQLiteStorage(DB_PATH);
|
|
26
|
-
|
|
26
|
+
vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
27
27
|
embedder = await createEmbedFunction(MODELS_PATH);
|
|
28
|
-
retriever = new MemoryRetriever(sqlite,
|
|
28
|
+
retriever = new MemoryRetriever(sqlite, vectorStore, embedder.embedQuery);
|
|
29
29
|
}
|
|
30
|
-
return { sqlite,
|
|
30
|
+
return { sqlite, vectorStore, retriever, embedder };
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Get current workspace from environment or cwd
|
|
@@ -255,7 +255,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
255
255
|
return { content: [{ type: 'text', text: `Found ${results.length} memories:\n\n${formatted}` }] };
|
|
256
256
|
}
|
|
257
257
|
case 'memextend_save': {
|
|
258
|
-
const { sqlite,
|
|
258
|
+
const { sqlite, vectorStore, embedder } = await getStorage();
|
|
259
259
|
const content = args?.content;
|
|
260
260
|
const tags = args?.tags ?? [];
|
|
261
261
|
if (!content || content.length < 10) {
|
|
@@ -287,7 +287,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
287
287
|
metadata: tags.length > 0 ? { tags } : null,
|
|
288
288
|
});
|
|
289
289
|
const vector = await embedder.embed(content);
|
|
290
|
-
await
|
|
290
|
+
await vectorStore.insertVector(memoryId, vector);
|
|
291
291
|
return { content: [{ type: 'text', text: `Memory saved successfully!\nID: ${memoryId}\nProject: ${basename(workspace)}` }] };
|
|
292
292
|
}
|
|
293
293
|
case 'memextend_save_global': {
|
|
@@ -324,7 +324,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
324
324
|
return { content: [{ type: 'text', text: formatted }] };
|
|
325
325
|
}
|
|
326
326
|
case 'memextend_forget': {
|
|
327
|
-
const { sqlite,
|
|
327
|
+
const { sqlite, vectorStore } = await getStorage();
|
|
328
328
|
const memoryId = args?.memoryId;
|
|
329
329
|
if (!memoryId) {
|
|
330
330
|
return { content: [{ type: 'text', text: 'Memory ID is required.' }], isError: true };
|
|
@@ -332,7 +332,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
332
332
|
const deleted = sqlite.deleteMemory(memoryId);
|
|
333
333
|
if (deleted) {
|
|
334
334
|
// Also delete the vector embedding
|
|
335
|
-
await
|
|
335
|
+
await vectorStore.deleteVector(memoryId);
|
|
336
336
|
return { content: [{ type: 'text', text: `Memory ${memoryId} deleted successfully.` }] };
|
|
337
337
|
}
|
|
338
338
|
else {
|
|
@@ -340,9 +340,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
case 'memextend_status': {
|
|
343
|
-
const { sqlite,
|
|
343
|
+
const { sqlite, vectorStore, embedder } = await getStorage();
|
|
344
344
|
const memoryCount = sqlite.getMemoryCount();
|
|
345
|
-
const vectorCount = await
|
|
345
|
+
const vectorCount = await vectorStore.getVectorCount();
|
|
346
346
|
const projectMemories = sqlite.getAllMemories(projectId, 1000);
|
|
347
347
|
const projectMemoryCount = projectMemories.length;
|
|
348
348
|
return {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,8CAA8C;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjJ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACpD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAElD,gCAAgC;AAChC,IAAI,MAAM,GAAyB,IAAI,CAAC;AACxC,IAAI,WAAW,GAA4B,IAAI,CAAC;AAChD,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,QAAQ,GAA2D,IAAI,CAAC;AAE5E,KAAK,UAAU,UAAU;IAMvB,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC1D,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAClD,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,6CAA6C;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,GAAG;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;KACd;CACF,CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,qUAAqU;gBAClV,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,qGAAqG;yBACnH;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,iDAAiD;yBAC/D;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,qDAAqD;yBACnE;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,6TAA6T;gBAC1U,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,0EAA0E;yBACxF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,uEAAuE;yBACrF;qBACF;oBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;aACF;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,8HAA8H;gBAC3I,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,6CAA6C;yBAC3D;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;4BACvC,WAAW,EAAE,oGAAoG;yBAClH;qBACF;oBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;iBAC9B;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,0HAA0H;gBACvI,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,0CAA0C;yBACxD;wBACD,cAAc,EAAE;4BACd,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,4CAA4C;yBAC1D;qBACF;iBACF;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,mDAAmD;gBAChE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gCAAgC;yBAC9C;qBACF;oBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;iBACvB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,qEAAqE;gBAClF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;IAC9D,OAAO;QACL,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,qBAAqB;gBAC1B,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,uDAAuD;gBACpE,QAAQ,EAAE,YAAY;aACvB;YACD;gBACE,GAAG,EAAE,oBAAoB;gBACzB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,gCAAgC;gBAC7C,QAAQ,EAAE,kBAAkB;aAC7B;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC9D,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,YAAY;wBACtB,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YAE5C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,kBAAkB;wBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,WAAW,EAAE,IAAI;4BACjB,WAAW;4BACX,SAAS;4BACT,SAAS;yBACV,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG;oBACH,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,UAAU,OAAO,EAAE;iBAC1B;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAE1C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAe,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAE,IAAI,EAAE,KAAgB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,MAAM,WAAW,GAAG,IAAI,EAAE,YAAuB,IAAI,KAAK,CAAC;gBAE3D,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;oBAClD,KAAK;oBACL,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iFAAiF,EAAE,CAAC,EAAE,CAAC;gBAClI,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBAC/D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBAC5F,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,WAAW,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC1H,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAEvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,iBAAiB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;YACpG,CAAC;YAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBAC7D,MAAM,OAAO,GAAG,IAAI,EAAE,OAAiB,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAgB,IAAI,EAAE,CAAC;gBAE1C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iFAAiF,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjJ,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACzG,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,aAAa,CAAC;wBACnB,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC;wBACzB,IAAI,EAAE,SAAS;wBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBAE3F,MAAM,CAAC,YAAY,CAAC;oBAClB,EAAE,EAAE,QAAQ;oBACZ,SAAS;oBACT,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;iBAC5C,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAEjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,QAAQ,cAAc,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/H,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAiB,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAyC,CAAC;gBAE7D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gDAAgD,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAChH,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACtH,CAAC;gBAED,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,mBAAmB,CAAC;oBACzB,EAAE,EAAE,SAAS;oBACb,GAAG,EAAE,IAAI;oBACT,OAAO;oBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,IAAI,YAAY,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;YACrF,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACzC,MAAM,IAAI,GAAI,IAAI,EAAE,IAAe,IAAI,CAAC,CAAC;gBACzC,MAAM,aAAa,GAAI,IAAI,EAAE,cAA0B,IAAI,IAAI,CAAC;gBAEhE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE;oBAC9D,UAAU,EAAE,IAAI;oBAChB,aAAa;iBACd,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kDAAkD,IAAI,2EAA2E,EAAE,CAAC,EAAE,CAAC;gBAClL,CAAC;gBAED,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC1D,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAkB,CAAC;gBAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxF,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,mCAAmC;oBACnC,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,QAAQ,wBAAwB,EAAE,CAAC,EAAE,CAAC;gBAC3F,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,QAAQ,aAAa,EAAE,CAAC,EAAE,CAAC;gBAChF,CAAC;YACH,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC5C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;gBAEvD,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC;gBAElD,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;;WAEP,QAAQ,CAAC,SAAS,CAAC;cAChB,SAAS;oBACH,kBAAkB;;;oBAGlB,WAAW;uBACR,WAAW;qBACb,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,4BAA4B;;;cAGnF,OAAO;aACR,YAAY;YACb,WAAW,EAAE;yBACd,CAAC;iBACH,CAAC;YACJ,CAAC;YAED;gBACE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memextend/cursor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Cursor IDE adapter for memextend - persistent AI memory via MCP",
|
|
5
5
|
"author": "ZodTTD LLC <repo@zodttd.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"postinstall": "node scripts/postinstall.js || true"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@memextend/core": "^0.
|
|
29
|
+
"@memextend/core": "^0.3.0",
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
package/scripts/build-cli.js
CHANGED
|
@@ -16,7 +16,7 @@ const commonOptions = {
|
|
|
16
16
|
target: 'node18',
|
|
17
17
|
format: 'cjs',
|
|
18
18
|
// External native modules that can't be bundled
|
|
19
|
-
external: ['better-sqlite3', 'node-llama-cpp'
|
|
19
|
+
external: ['better-sqlite3', 'node-llama-cpp'],
|
|
20
20
|
logLevel: 'warning',
|
|
21
21
|
// Add shebang for CLI executables
|
|
22
22
|
banner: {
|
package/scripts/build-mcp.js
CHANGED
|
@@ -16,7 +16,7 @@ const commonOptions = {
|
|
|
16
16
|
target: 'node18',
|
|
17
17
|
format: 'cjs',
|
|
18
18
|
// External native modules that can't be bundled
|
|
19
|
-
external: ['better-sqlite3', 'node-llama-cpp'
|
|
19
|
+
external: ['better-sqlite3', 'node-llama-cpp'],
|
|
20
20
|
logLevel: 'warning',
|
|
21
21
|
};
|
|
22
22
|
|