@memtensor/memos-local-openclaw-plugin 0.3.16 โ 0.3.18
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 +5 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +3 -3
- package/dist/telemetry.js.map +1 -1
- package/index.ts +24 -16
- package/package.json +1 -1
- package/scripts/postinstall.cjs +44 -9
- package/src/telemetry.ts +3 -3
package/README.md
CHANGED
|
@@ -476,16 +476,19 @@ openclaw gateway stop && openclaw gateway start
|
|
|
476
476
|
|
|
477
477
|
> **Tip:** To update all plugins at once: `openclaw plugins update --all`
|
|
478
478
|
|
|
479
|
-
**If `openclaw plugins update` doesn't work** (plugin not in install registry):
|
|
479
|
+
**If `openclaw plugins update` doesn't work** (plugin not in install registry), reinstall:
|
|
480
480
|
|
|
481
481
|
```bash
|
|
482
|
+
rm -rf ~/.openclaw/extensions/memos-local-openclaw-plugin
|
|
482
483
|
openclaw plugins install @memtensor/memos-local-openclaw-plugin
|
|
483
484
|
```
|
|
484
485
|
|
|
485
|
-
|
|
486
|
+
> **Note:** `openclaw plugins install` requires the target directory to not exist. If you see `plugin already exists`, delete the directory first. Your memory data is stored separately at `~/.openclaw/memos-local/memos.db` and will not be affected.
|
|
486
487
|
|
|
487
488
|
## Troubleshooting
|
|
488
489
|
|
|
490
|
+
> ๐ **่ฏฆ็ปๆๆฅๆๅ / Detailed troubleshooting guide:** [docs/troubleshooting.html](https://memtensor.github.io/MemOS/apps/memos-local-openclaw/docs/troubleshooting.html) โ ๅ
ๅซ้ๆญฅๆๆฅๆต็จใๆฅๅฟๆฅ็ๆนๆณใๅฎๅ
จ้่ฃ
ๆญฅ้ชค็ญใ
|
|
491
|
+
|
|
489
492
|
### Common Issues
|
|
490
493
|
|
|
491
494
|
1. **Note the exact error** โ e.g. `plugin not found`, `Cannot find module 'xxx'`, `Invalid config`.
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAM;gBAEf,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAyBzF,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,OAAO;IAuBf,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAQ/E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAM;gBAEf,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAyBzF,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,OAAO;IAuBf,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAQ/E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAO5E,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAM7C,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM5C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAO/D,iBAAiB,IAAI,IAAI;IAIzB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ1D,OAAO,CAAC,kBAAkB;IAQpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC"}
|
package/dist/telemetry.js
CHANGED
|
@@ -136,8 +136,7 @@ class Telemetry {
|
|
|
136
136
|
this.maybeSendDailyPing();
|
|
137
137
|
}
|
|
138
138
|
trackToolCalled(toolName, latencyMs, success) {
|
|
139
|
-
this.capture(
|
|
140
|
-
tool_name: toolName,
|
|
139
|
+
this.capture(toolName, {
|
|
141
140
|
latency_ms: Math.round(latencyMs),
|
|
142
141
|
success,
|
|
143
142
|
});
|
|
@@ -162,7 +161,8 @@ class Telemetry {
|
|
|
162
161
|
this.capture("viewer_opened");
|
|
163
162
|
}
|
|
164
163
|
trackAutoRecall(hitCount, latencyMs) {
|
|
165
|
-
this.capture("
|
|
164
|
+
this.capture("memory_search", {
|
|
165
|
+
auto: true,
|
|
166
166
|
hit_count: hitCount,
|
|
167
167
|
latency_ms: Math.round(latencyMs),
|
|
168
168
|
});
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -76,17 +76,27 @@ const memosLocalPlugin = {
|
|
|
76
76
|
|
|
77
77
|
register(api: OpenClawPluginApi) {
|
|
78
78
|
// โโโ Ensure better-sqlite3 native module is available โโโ
|
|
79
|
+
const pluginDir = path.dirname(new URL(import.meta.url).pathname);
|
|
79
80
|
let sqliteReady = false;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
|
|
82
|
+
function trySqliteLoad(): boolean {
|
|
83
|
+
try {
|
|
84
|
+
const resolved = require.resolve("better-sqlite3", { paths: [pluginDir] });
|
|
85
|
+
if (!resolved.startsWith(pluginDir)) {
|
|
86
|
+
api.logger.warn(`memos-local: better-sqlite3 resolved outside plugin dir: ${resolved}`);
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
require(resolved);
|
|
90
|
+
return true;
|
|
91
|
+
} catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
85
94
|
}
|
|
86
95
|
|
|
96
|
+
sqliteReady = trySqliteLoad();
|
|
97
|
+
|
|
87
98
|
if (!sqliteReady) {
|
|
88
|
-
|
|
89
|
-
api.logger.warn(`memos-local: better-sqlite3 not found, attempting auto-rebuild in ${pluginDir} ...`);
|
|
99
|
+
api.logger.warn(`memos-local: better-sqlite3 not found in ${pluginDir}, attempting auto-rebuild ...`);
|
|
90
100
|
|
|
91
101
|
try {
|
|
92
102
|
const { spawnSync } = require("child_process");
|
|
@@ -103,16 +113,14 @@ const memosLocalPlugin = {
|
|
|
103
113
|
if (stderr) api.logger.warn(`memos-local: rebuild stderr: ${stderr.slice(0, 500)}`);
|
|
104
114
|
|
|
105
115
|
if (rebuildResult.status === 0) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
delete require.cache[
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
require("better-sqlite3");
|
|
112
|
-
sqliteReady = true;
|
|
116
|
+
Object.keys(require.cache)
|
|
117
|
+
.filter(k => k.includes("better-sqlite3") || k.includes("better_sqlite3"))
|
|
118
|
+
.forEach(k => delete require.cache[k]);
|
|
119
|
+
sqliteReady = trySqliteLoad();
|
|
120
|
+
if (sqliteReady) {
|
|
113
121
|
api.logger.info("memos-local: better-sqlite3 auto-rebuild succeeded!");
|
|
114
|
-
}
|
|
115
|
-
api.logger.warn(
|
|
122
|
+
} else {
|
|
123
|
+
api.logger.warn("memos-local: rebuild exited 0 but module still not loadable from plugin dir");
|
|
116
124
|
}
|
|
117
125
|
} else {
|
|
118
126
|
api.logger.warn(`memos-local: rebuild exited with code ${rebuildResult.status}`);
|
package/package.json
CHANGED
package/scripts/postinstall.cjs
CHANGED
|
@@ -190,8 +190,43 @@ try {
|
|
|
190
190
|
|
|
191
191
|
phase(2, "ๆฃๆฅ better-sqlite3 ๅ็ๆจกๅ / Check native module");
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
const sqliteModulePath = path.join(pluginDir, "node_modules", "better-sqlite3");
|
|
194
|
+
|
|
195
|
+
function findSqliteBinding() {
|
|
196
|
+
const candidates = [
|
|
197
|
+
path.join(sqliteModulePath, "build", "Release", "better_sqlite3.node"),
|
|
198
|
+
path.join(sqliteModulePath, "build", "better_sqlite3.node"),
|
|
199
|
+
path.join(sqliteModulePath, "build", "Debug", "better_sqlite3.node"),
|
|
200
|
+
];
|
|
201
|
+
|
|
202
|
+
const prebuildDir = path.join(sqliteModulePath, "prebuilds");
|
|
203
|
+
if (fs.existsSync(prebuildDir)) {
|
|
204
|
+
try {
|
|
205
|
+
const platformDir = `${process.platform}-${process.arch}`;
|
|
206
|
+
const pbDir = path.join(prebuildDir, platformDir);
|
|
207
|
+
if (fs.existsSync(pbDir)) {
|
|
208
|
+
const files = fs.readdirSync(pbDir).filter(f => f.endsWith(".node"));
|
|
209
|
+
for (const f of files) candidates.push(path.join(pbDir, f));
|
|
210
|
+
}
|
|
211
|
+
} catch { /* ignore */ }
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
for (const c of candidates) {
|
|
215
|
+
if (fs.existsSync(c)) return c;
|
|
216
|
+
}
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function sqliteBindingsExist() {
|
|
221
|
+
const found = findSqliteBinding();
|
|
222
|
+
if (found) {
|
|
223
|
+
log(`Native binding found: ${DIM}${found}${RESET}`);
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (sqliteBindingsExist()) {
|
|
195
230
|
ok("better-sqlite3 is ready.");
|
|
196
231
|
console.log(`
|
|
197
232
|
${GREEN}${BOLD} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -202,8 +237,9 @@ ${GREEN}${BOLD} โโโโโโโโโโโโโโโโโโโโโ
|
|
|
202
237
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${RESET}
|
|
203
238
|
`);
|
|
204
239
|
process.exit(0);
|
|
205
|
-
}
|
|
206
|
-
warn("better-sqlite3 native bindings not found.");
|
|
240
|
+
} else {
|
|
241
|
+
warn("better-sqlite3 native bindings not found in plugin dir.");
|
|
242
|
+
log(`Searched in: ${DIM}${sqliteModulePath}/build/${RESET}`);
|
|
207
243
|
log("Running: npm rebuild better-sqlite3 (may take 30-60s)...");
|
|
208
244
|
}
|
|
209
245
|
|
|
@@ -224,9 +260,7 @@ if (stdout) log(`rebuild output: ${DIM}${stdout.slice(0, 500)}${RESET}`);
|
|
|
224
260
|
if (stderr) warn(`rebuild stderr: ${DIM}${stderr.slice(0, 500)}${RESET}`);
|
|
225
261
|
|
|
226
262
|
if (result.status === 0) {
|
|
227
|
-
|
|
228
|
-
delete require.cache[require.resolve("better-sqlite3")];
|
|
229
|
-
require("better-sqlite3");
|
|
263
|
+
if (sqliteBindingsExist()) {
|
|
230
264
|
ok(`better-sqlite3 rebuilt successfully (${elapsed}s).`);
|
|
231
265
|
console.log(`
|
|
232
266
|
${GREEN}${BOLD} โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -237,8 +271,9 @@ ${GREEN}${BOLD} โโโโโโโโโโโโโโโโโโโโโ
|
|
|
237
271
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${RESET}
|
|
238
272
|
`);
|
|
239
273
|
process.exit(0);
|
|
240
|
-
}
|
|
241
|
-
fail(`Rebuild completed but
|
|
274
|
+
} else {
|
|
275
|
+
fail(`Rebuild completed but bindings still missing (${elapsed}s).`);
|
|
276
|
+
fail(`Looked in: ${sqliteModulePath}/build/`);
|
|
242
277
|
}
|
|
243
278
|
} else {
|
|
244
279
|
fail(`Rebuild failed with exit code ${result.status} (${elapsed}s).`);
|
package/src/telemetry.ts
CHANGED
|
@@ -113,8 +113,7 @@ export class Telemetry {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
trackToolCalled(toolName: string, latencyMs: number, success: boolean): void {
|
|
116
|
-
this.capture(
|
|
117
|
-
tool_name: toolName,
|
|
116
|
+
this.capture(toolName, {
|
|
118
117
|
latency_ms: Math.round(latencyMs),
|
|
119
118
|
success,
|
|
120
119
|
});
|
|
@@ -144,7 +143,8 @@ export class Telemetry {
|
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
trackAutoRecall(hitCount: number, latencyMs: number): void {
|
|
147
|
-
this.capture("
|
|
146
|
+
this.capture("memory_search", {
|
|
147
|
+
auto: true,
|
|
148
148
|
hit_count: hitCount,
|
|
149
149
|
latency_ms: Math.round(latencyMs),
|
|
150
150
|
});
|