memory-mimir 2.3.4 → 2.4.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.js +49 -55
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -11,7 +11,6 @@ import * as fs from "node:fs";
|
|
|
11
11
|
import * as path from "node:path";
|
|
12
12
|
import * as os from "node:os";
|
|
13
13
|
import * as readline from "node:readline";
|
|
14
|
-
import { execSync } from "node:child_process";
|
|
15
14
|
import { MimirClient } from "./mimir-client.js";
|
|
16
15
|
const DEFAULT_URL = "https://api.allinmimir.com";
|
|
17
16
|
function parseArgs(argv) {
|
|
@@ -87,21 +86,6 @@ function writeConfig(configPath, apiKey, mimirUrl) {
|
|
|
87
86
|
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
88
87
|
fs.writeFileSync(configPath, JSON.stringify(updatedConfig, null, 2));
|
|
89
88
|
}
|
|
90
|
-
function installPlugin() {
|
|
91
|
-
console.log("\x1b[2m Installing memory-mimir plugin...\x1b[0m");
|
|
92
|
-
try {
|
|
93
|
-
execSync("openclaw plugins install memory-mimir", {
|
|
94
|
-
stdio: "inherit",
|
|
95
|
-
timeout: 60_000,
|
|
96
|
-
});
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
console.log("\x1b[33m ⚠ 'openclaw plugins install' failed or not available.\x1b[0m");
|
|
101
|
-
console.log("\x1b[2m Config will still be written — install the plugin manually if needed.\x1b[0m");
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
89
|
const SKILL_MD = `---
|
|
106
90
|
name: mimir-memory
|
|
107
91
|
description: >
|
|
@@ -230,50 +214,47 @@ async function cmdInit(url, code) {
|
|
|
230
214
|
if (!code) {
|
|
231
215
|
code = await promptForCode();
|
|
232
216
|
}
|
|
233
|
-
|
|
234
|
-
// User pressed Enter without code — show help
|
|
235
|
-
console.log(`
|
|
236
|
-
\x1b[33m Mimir is currently in closed beta.\x1b[0m
|
|
237
|
-
|
|
238
|
-
\x1b[2m To get started:\x1b[0m
|
|
239
|
-
\x1b[2m 1. Get an invite code from an existing Mimir user\x1b[0m
|
|
240
|
-
\x1b[2m 2. Or register at https://www.allinmimir.com\x1b[0m
|
|
241
|
-
|
|
242
|
-
\x1b[2m Then run:\x1b[0m
|
|
243
|
-
\x1b[1m npx memory-mimir init --code YOUR_CODE\x1b[0m
|
|
244
|
-
|
|
245
|
-
\x1b[2m Already have an API key?\x1b[0m
|
|
246
|
-
\x1b[1m npx memory-mimir setup --api-key sk-mimir-xxx\x1b[0m
|
|
247
|
-
`);
|
|
248
|
-
process.exit(0);
|
|
249
|
-
}
|
|
250
|
-
// Validate format client-side
|
|
251
|
-
code = code.toUpperCase().trim();
|
|
252
|
-
console.log("\x1b[2m Validating invite code...\x1b[0m");
|
|
217
|
+
// Register device (with or without invite code)
|
|
253
218
|
const client = new MimirClient({ url });
|
|
254
219
|
let deviceData;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
console.error("\x1b[31m ✗ Invalid invite code. Please check and try again.\x1b[0m");
|
|
220
|
+
if (code) {
|
|
221
|
+
// Invite code path: validate and activate
|
|
222
|
+
code = code.toUpperCase().trim();
|
|
223
|
+
console.log("\x1b[2m Validating invite code...\x1b[0m");
|
|
224
|
+
try {
|
|
225
|
+
deviceData = await client.deviceInit({ inviteCode: code });
|
|
262
226
|
}
|
|
263
|
-
|
|
264
|
-
|
|
227
|
+
catch (err) {
|
|
228
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
229
|
+
if (msg.includes("not found")) {
|
|
230
|
+
console.error("\x1b[31m ✗ Invalid invite code. Please check and try again.\x1b[0m");
|
|
231
|
+
}
|
|
232
|
+
else if (msg.includes("expired")) {
|
|
233
|
+
console.error("\x1b[31m ✗ This invite code has expired.\x1b[0m");
|
|
234
|
+
}
|
|
235
|
+
else if (msg.includes("maximum devices")) {
|
|
236
|
+
console.error("\x1b[31m ✗ Maximum devices reached for this invite code (limit: 3).\x1b[0m");
|
|
237
|
+
console.error("\x1b[2m Revoke an old device at https://www.allinmimir.com/dashboard\x1b[0m");
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
console.error(`\x1b[31m ✗ Failed to activate: ${msg}\x1b[0m`);
|
|
241
|
+
}
|
|
242
|
+
process.exit(1);
|
|
265
243
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// No invite code: create anonymous device with pairing code
|
|
247
|
+
console.log("\x1b[2m Registering device...\x1b[0m");
|
|
248
|
+
try {
|
|
249
|
+
deviceData = await client.deviceInit();
|
|
269
250
|
}
|
|
270
|
-
|
|
271
|
-
|
|
251
|
+
catch (err) {
|
|
252
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
253
|
+
console.error(`\x1b[31m ✗ Failed to register device: ${msg}\x1b[0m`);
|
|
254
|
+
process.exit(1);
|
|
272
255
|
}
|
|
273
|
-
process.exit(1);
|
|
274
256
|
}
|
|
275
|
-
// Install
|
|
276
|
-
installPlugin();
|
|
257
|
+
// Install SKILL (best-effort)
|
|
277
258
|
installSkill();
|
|
278
259
|
// Write config
|
|
279
260
|
const configPath = path.join(os.homedir(), ".openclaw", "openclaw.json");
|
|
@@ -289,7 +270,7 @@ async function cmdInit(url, code) {
|
|
|
289
270
|
\x1b[1m Restart OpenClaw to reconnect to your memories.\x1b[0m
|
|
290
271
|
`);
|
|
291
272
|
}
|
|
292
|
-
else {
|
|
273
|
+
else if (code) {
|
|
293
274
|
console.log(`
|
|
294
275
|
\x1b[1;32m✅ Mimir activated! Memory engine online.\x1b[0m
|
|
295
276
|
\x1b[2m─────────────────────────────────────────\x1b[0m
|
|
@@ -300,6 +281,20 @@ async function cmdInit(url, code) {
|
|
|
300
281
|
\x1b[1m Restart OpenClaw to start building memories.\x1b[0m
|
|
301
282
|
|
|
302
283
|
\x1b[2;3m 💡 Save your invite code — use it to recover your account on any device.\x1b[0m
|
|
284
|
+
`);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
console.log(`
|
|
288
|
+
\x1b[1;32m✅ Mimir installed! Pairing required.\x1b[0m
|
|
289
|
+
\x1b[2m─────────────────────────────────────────\x1b[0m
|
|
290
|
+
\x1b[2m Pairing Code: \x1b[1m${deviceData.pairing_code}\x1b[0m
|
|
291
|
+
\x1b[2m Server: ${url}\x1b[0m
|
|
292
|
+
\x1b[2m Config: ${configPath}\x1b[0m
|
|
293
|
+
|
|
294
|
+
\x1b[1m Go to https://www.allinmimir.com/dashboard to pair this device.\x1b[0m
|
|
295
|
+
\x1b[2m Enter your pairing code to link memories to your account.\x1b[0m
|
|
296
|
+
|
|
297
|
+
\x1b[1m Restart OpenClaw after pairing.\x1b[0m
|
|
303
298
|
`);
|
|
304
299
|
}
|
|
305
300
|
}
|
|
@@ -327,7 +322,6 @@ async function cmdSetup(url, apiKey, skipVerify) {
|
|
|
327
322
|
}
|
|
328
323
|
}
|
|
329
324
|
// Install plugin + SKILL (best-effort)
|
|
330
|
-
installPlugin();
|
|
331
325
|
installSkill();
|
|
332
326
|
// Write config
|
|
333
327
|
const configPath = path.join(os.homedir(), ".openclaw", "openclaw.json");
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|