@t0ken.ai/memoryx-openclaw-plugin 1.1.0 → 1.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,UAAU,OAAO;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,cAAM,kBAAkB;IACpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;;IAO/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IA6BlD,WAAW,IAAI,OAAO;IAiBtB,KAAK,IAAI;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAkB/E,UAAU,IAAI;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO3F,SAAS,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;CAOpF;AAED,cAAM,aAAa;IACf,OAAO,CAAC,MAAM,CAMZ;IAEF,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,YAAY,CAA6B;gBAErC,YAAY,CAAC,EAAE,YAAY;IAQvC,OAAO,KAAK,OAAO,GAElB;YAEa,IAAI;IAWlB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;YAIJ,YAAY;IAgC1B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;YAQT,iBAAiB;IAqClB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAoD/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,SAAS,IAAI;QAChB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KAC7D;CAOJ;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,wBAqEE;AAEF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAUD,UAAU,OAAO;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA6ED,cAAM,kBAAkB;IACpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;;IAO/C,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAInB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IA6BlD,WAAW,IAAI,OAAO;IAiBtB,KAAK,IAAI;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAkB/E,UAAU,IAAI;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO3F,SAAS,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;CAOpF;AAED,cAAM,aAAa;IACf,OAAO,CAAC,MAAM,CAMZ;IAEF,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,YAAY,CAA6B;gBAErC,YAAY,CAAC,EAAE,YAAY;IAQvC,OAAO,KAAK,OAAO,GAElB;YAEa,IAAI;IAWlB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;YAIJ,YAAY;IAgC1B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,eAAe;YAQT,iBAAiB;IAqClB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAoD/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,SAAS,IAAI;QAChB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE;YAAE,YAAY,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAA;KAC7D;CAOJ;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,wBAqEE;AAEF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -14,15 +14,55 @@ import * as fs from "fs";
14
14
  import * as path from "path";
15
15
  import * as os from "os";
16
16
  import * as crypto from "crypto";
17
+ import Database from "better-sqlite3";
17
18
  const DEFAULT_API_BASE = "https://t0ken.ai/api";
18
- const CONFIG_DIR = path.join(os.homedir(), ".t0ken");
19
- const CONFIG_FILE = path.join(CONFIG_DIR, "memoryx.json");
20
- class FileStorage {
19
+ let db = null;
20
+ let dbPath = "";
21
+ function getDbPath() {
22
+ if (dbPath)
23
+ return dbPath;
24
+ const possiblePaths = [
25
+ path.join(process.cwd(), "memoryx.sqlite"),
26
+ path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin", "memoryx.sqlite"),
27
+ path.join(os.homedir(), ".t0ken", "memoryx.sqlite")
28
+ ];
29
+ for (const p of possiblePaths) {
30
+ if (fs.existsSync(p)) {
31
+ dbPath = p;
32
+ return dbPath;
33
+ }
34
+ }
35
+ dbPath = path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin", "memoryx.sqlite");
36
+ const dir = path.dirname(dbPath);
37
+ if (!fs.existsSync(dir)) {
38
+ fs.mkdirSync(dir, { recursive: true });
39
+ }
40
+ return dbPath;
41
+ }
42
+ function initDb() {
43
+ const dbFile = getDbPath();
44
+ const database = new Database(dbFile);
45
+ database.exec(`
46
+ CREATE TABLE IF NOT EXISTS config (
47
+ key TEXT PRIMARY KEY,
48
+ value TEXT
49
+ )
50
+ `);
51
+ return database;
52
+ }
53
+ function getDb() {
54
+ if (!db) {
55
+ db = initDb();
56
+ }
57
+ return db;
58
+ }
59
+ class SQLiteStorage {
21
60
  static load() {
22
61
  try {
23
- if (fs.existsSync(CONFIG_FILE)) {
24
- const data = fs.readFileSync(CONFIG_FILE, "utf-8");
25
- return JSON.parse(data);
62
+ const database = getDb();
63
+ const row = database.prepare("SELECT value FROM config WHERE key = 'config'").get();
64
+ if (row) {
65
+ return JSON.parse(row.value);
26
66
  }
27
67
  }
28
68
  catch (e) {
@@ -32,10 +72,10 @@ class FileStorage {
32
72
  }
33
73
  static save(config) {
34
74
  try {
35
- if (!fs.existsSync(CONFIG_DIR)) {
36
- fs.mkdirSync(CONFIG_DIR, { recursive: true });
37
- }
38
- fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
75
+ const database = getDb();
76
+ database.prepare(`
77
+ INSERT OR REPLACE INTO config (key, value) VALUES ('config', ?)
78
+ `).run(JSON.stringify(config));
39
79
  }
40
80
  catch (e) {
41
81
  console.warn("[MemoryX] Failed to save config:", e);
@@ -160,7 +200,7 @@ class MemoryXPlugin {
160
200
  this.config.initialized = true;
161
201
  }
162
202
  loadConfig() {
163
- const stored = FileStorage.load();
203
+ const stored = SQLiteStorage.load();
164
204
  if (stored) {
165
205
  this.config = {
166
206
  ...this.config,
@@ -170,7 +210,7 @@ class MemoryXPlugin {
170
210
  }
171
211
  }
172
212
  saveConfig() {
173
- FileStorage.save(this.config);
213
+ SQLiteStorage.save(this.config);
174
214
  }
175
215
  async autoRegister() {
176
216
  try {
@@ -334,14 +374,14 @@ let plugin;
334
374
  export default {
335
375
  id: "memoryx-openclaw-plugin",
336
376
  name: "MemoryX Real-time Plugin",
337
- version: "1.1.0",
377
+ version: "1.1.1",
338
378
  description: "Real-time memory capture and recall for OpenClaw",
339
379
  register(api, pluginConfig) {
340
380
  api.logger.info("[MemoryX] Plugin registering...");
341
381
  if (pluginConfig?.apiBaseUrl) {
342
382
  api.logger.info(`[MemoryX] API Base: \`${pluginConfig.apiBaseUrl}\``);
343
383
  }
344
- api.logger.info(`[MemoryX] Config: ${CONFIG_FILE}`);
384
+ api.logger.info(`[MemoryX] Database: ${getDbPath()}`);
345
385
  plugin = new MemoryXPlugin(pluginConfig);
346
386
  api.on("message_received", async (event, ctx) => {
347
387
  const { content, from, timestamp } = event;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "memoryx-openclaw-plugin",
3
3
  "name": "MemoryX Real-time Plugin",
4
- "version": "1.1.0",
4
+ "version": "1.1.1",
5
5
  "description": "Real-time memory capture and recall for OpenClaw",
6
6
  "kind": "memory",
7
7
  "main": "./dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "MemoryX real-time memory capture and recall plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "author": "MemoryX Team",
@@ -29,11 +29,13 @@
29
29
  "extensions": ["./dist/index.js"]
30
30
  },
31
31
  "devDependencies": {
32
+ "@types/better-sqlite3": "^7.6.0",
32
33
  "@types/node": "^20.0.0",
33
34
  "typescript": "^5.0.0"
34
35
  },
35
36
  "dependencies": {
36
37
  "@huggingface/transformers": "^3.8.1",
38
+ "better-sqlite3": "^11.0.0",
37
39
  "js-tiktoken": "^1.0.21",
38
40
  "onnxruntime-node": "^1.24.1",
39
41
  "onnxruntime-web": "^1.24.1"