@memextend/opencode 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/README.md +1 -1
- package/dist/mcp/server.cjs +142 -92
- package/dist/mcp/server.js +13 -13
- package/dist/mcp/server.js.map +1 -1
- package/package.json +2 -2
- package/scripts/build.js +1 -1
package/README.md
CHANGED
|
@@ -195,7 +195,7 @@ OpenCode automatically loads `AGENTS.md` files and includes them in the agent's
|
|
|
195
195
|
2. **Tool Discovery**: OpenCode discovers the memextend tools at startup
|
|
196
196
|
3. **Semantic Search**: Memories are embedded using the Nomic embed model for semantic search
|
|
197
197
|
4. **Hybrid Search**: Combines vector similarity with full-text search for best results
|
|
198
|
-
5. **Persistent Storage**: Memories are stored in SQLite with
|
|
198
|
+
5. **Persistent Storage**: Memories are stored in SQLite with sqlite-vec for vectors
|
|
199
199
|
|
|
200
200
|
## Configuration Reference
|
|
201
201
|
|
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);
|
|
@@ -14447,25 +14497,25 @@ var DB_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "memextend.db");
|
|
|
14447
14497
|
var VECTORS_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "vectors");
|
|
14448
14498
|
var MODELS_PATH = (0, import_path2.join)(MEMEXTEND_DIR, "models");
|
|
14449
14499
|
var sqlite = null;
|
|
14450
|
-
var
|
|
14500
|
+
var vectorStore = null;
|
|
14451
14501
|
var retriever = null;
|
|
14452
14502
|
var embedder = null;
|
|
14453
14503
|
async function getStorage() {
|
|
14454
|
-
if (!sqlite || !
|
|
14504
|
+
if (!sqlite || !vectorStore || !retriever || !embedder) {
|
|
14455
14505
|
if (!(0, import_fs2.existsSync)(DB_PATH)) {
|
|
14456
14506
|
throw new Error("memextend not initialized. Run `memextend init` first.");
|
|
14457
14507
|
}
|
|
14458
14508
|
sqlite = new SQLiteStorage(DB_PATH);
|
|
14459
|
-
|
|
14509
|
+
vectorStore = await SQLiteVecStorage.create(VECTORS_PATH);
|
|
14460
14510
|
embedder = await createEmbedFunction(MODELS_PATH);
|
|
14461
|
-
retriever = new MemoryRetriever(sqlite,
|
|
14511
|
+
retriever = new MemoryRetriever(sqlite, vectorStore, embedder.embedQuery);
|
|
14462
14512
|
}
|
|
14463
|
-
return { sqlite,
|
|
14513
|
+
return { sqlite, vectorStore, retriever, embedder };
|
|
14464
14514
|
}
|
|
14465
14515
|
var server = new Server(
|
|
14466
14516
|
{
|
|
14467
14517
|
name: "memextend",
|
|
14468
|
-
version: "0.
|
|
14518
|
+
version: "0.3.0"
|
|
14469
14519
|
},
|
|
14470
14520
|
{
|
|
14471
14521
|
capabilities: {
|
|
@@ -14595,7 +14645,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
14595
14645
|
${formatted}` }] };
|
|
14596
14646
|
}
|
|
14597
14647
|
case "memextend_save": {
|
|
14598
|
-
const { sqlite: sqlite2,
|
|
14648
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2, embedder: embedder2 } = await getStorage();
|
|
14599
14649
|
const content = args?.content;
|
|
14600
14650
|
const projectId = args?.projectId ?? "default";
|
|
14601
14651
|
if (!content || content.length < 10) {
|
|
@@ -14616,7 +14666,7 @@ ${formatted}` }] };
|
|
|
14616
14666
|
metadata: null
|
|
14617
14667
|
});
|
|
14618
14668
|
const vector = await embedder2.embed(content);
|
|
14619
|
-
await
|
|
14669
|
+
await vectorStore2.insertVector(memoryId, vector);
|
|
14620
14670
|
return { content: [{ type: "text", text: `Memory saved with ID: ${memoryId}` }] };
|
|
14621
14671
|
}
|
|
14622
14672
|
case "memextend_save_global": {
|
|
@@ -14639,20 +14689,20 @@ ${formatted}` }] };
|
|
|
14639
14689
|
return { content: [{ type: "text", text: `Global ${type} saved: "${content}"` }] };
|
|
14640
14690
|
}
|
|
14641
14691
|
case "memextend_forget": {
|
|
14642
|
-
const { sqlite: sqlite2,
|
|
14692
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2 } = await getStorage();
|
|
14643
14693
|
const memoryId = args?.memoryId;
|
|
14644
14694
|
const deleted = sqlite2.deleteMemory(memoryId);
|
|
14645
14695
|
if (deleted) {
|
|
14646
|
-
await
|
|
14696
|
+
await vectorStore2.deleteVector(memoryId);
|
|
14647
14697
|
return { content: [{ type: "text", text: `Memory ${memoryId} deleted.` }] };
|
|
14648
14698
|
} else {
|
|
14649
14699
|
return { content: [{ type: "text", text: `Memory ${memoryId} not found.` }] };
|
|
14650
14700
|
}
|
|
14651
14701
|
}
|
|
14652
14702
|
case "memextend_status": {
|
|
14653
|
-
const { sqlite: sqlite2,
|
|
14703
|
+
const { sqlite: sqlite2, vectorStore: vectorStore2, embedder: embedder2 } = await getStorage();
|
|
14654
14704
|
const memoryCount = sqlite2.getMemoryCount();
|
|
14655
|
-
const vectorCount = await
|
|
14705
|
+
const vectorCount = await vectorStore2.getVectorCount();
|
|
14656
14706
|
return {
|
|
14657
14707
|
content: [{
|
|
14658
14708
|
type: "text",
|
package/dist/mcp/server.js
CHANGED
|
@@ -7,31 +7,31 @@ import { randomUUID } from 'crypto';
|
|
|
7
7
|
import { existsSync } from 'fs';
|
|
8
8
|
import { join } from 'path';
|
|
9
9
|
import { homedir } from 'os';
|
|
10
|
-
import { SQLiteStorage,
|
|
10
|
+
import { SQLiteStorage, SQLiteVecStorage, MemoryRetriever, createEmbedFunction } 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
|
const server = new Server({
|
|
33
33
|
name: 'memextend',
|
|
34
|
-
version: '0.
|
|
34
|
+
version: '0.3.0',
|
|
35
35
|
}, {
|
|
36
36
|
capabilities: {
|
|
37
37
|
tools: {},
|
|
@@ -158,7 +158,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
158
158
|
return { content: [{ type: 'text', text: `Found ${results.length} memories:\n\n${formatted}` }] };
|
|
159
159
|
}
|
|
160
160
|
case 'memextend_save': {
|
|
161
|
-
const { sqlite,
|
|
161
|
+
const { sqlite, vectorStore, embedder } = await getStorage();
|
|
162
162
|
const content = args?.content;
|
|
163
163
|
const projectId = args?.projectId ?? 'default';
|
|
164
164
|
// Validate content
|
|
@@ -180,7 +180,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
180
180
|
metadata: null,
|
|
181
181
|
});
|
|
182
182
|
const vector = await embedder.embed(content);
|
|
183
|
-
await
|
|
183
|
+
await vectorStore.insertVector(memoryId, vector);
|
|
184
184
|
return { content: [{ type: 'text', text: `Memory saved with ID: ${memoryId}` }] };
|
|
185
185
|
}
|
|
186
186
|
case 'memextend_save_global': {
|
|
@@ -204,12 +204,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
204
204
|
return { content: [{ type: 'text', text: `Global ${type} saved: "${content}"` }] };
|
|
205
205
|
}
|
|
206
206
|
case 'memextend_forget': {
|
|
207
|
-
const { sqlite,
|
|
207
|
+
const { sqlite, vectorStore } = await getStorage();
|
|
208
208
|
const memoryId = args?.memoryId;
|
|
209
209
|
const deleted = sqlite.deleteMemory(memoryId);
|
|
210
210
|
if (deleted) {
|
|
211
211
|
// Also delete the vector embedding
|
|
212
|
-
await
|
|
212
|
+
await vectorStore.deleteVector(memoryId);
|
|
213
213
|
return { content: [{ type: 'text', text: `Memory ${memoryId} deleted.` }] };
|
|
214
214
|
}
|
|
215
215
|
else {
|
|
@@ -217,9 +217,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
case 'memextend_status': {
|
|
220
|
-
const { sqlite,
|
|
220
|
+
const { sqlite, vectorStore, embedder } = await getStorage();
|
|
221
221
|
const memoryCount = sqlite.getMemoryCount();
|
|
222
|
-
const vectorCount = await
|
|
222
|
+
const vectorCount = await vectorStore.getVectorCount();
|
|
223
223
|
return {
|
|
224
224
|
content: [{
|
|
225
225
|
type: 'text',
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,8CAA8C;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memextend/opencode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "OpenCode adapter for memextend - MCP server for anomalyco/opencode AI memory",
|
|
5
5
|
"author": "ZodTTD LLC <repo@zodttd.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"setup": "node dist/setup.js"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@memextend/core": "^0.
|
|
31
|
+
"@memextend/core": "^0.3.0",
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
package/scripts/build.js
CHANGED
|
@@ -17,7 +17,7 @@ const commonOptions = {
|
|
|
17
17
|
format: 'cjs',
|
|
18
18
|
// External packages that should not be bundled
|
|
19
19
|
// These are native modules or have complex dependencies
|
|
20
|
-
external: ['better-sqlite3', 'node-llama-cpp'
|
|
20
|
+
external: ['better-sqlite3', 'node-llama-cpp'],
|
|
21
21
|
logLevel: 'warning',
|
|
22
22
|
};
|
|
23
23
|
|