@drakon-systems/multi-clawd 2.6.1 → 2.6.2
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/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/scripts/doctor.mjs +28 -6
package/README.md
CHANGED
|
@@ -416,7 +416,7 @@ openclaw plugins install (Get-Location).Path
|
|
|
416
416
|
**Or let your agent install it.** Running an OpenClaw assistant or Claude
|
|
417
417
|
Code on the target machine already? Paste it this and go make coffee:
|
|
418
418
|
|
|
419
|
-
> Read https://raw.githubusercontent.com/Drakon-Systems-Ltd/multi-clawd/v2.6.
|
|
419
|
+
> Read https://raw.githubusercontent.com/Drakon-Systems-Ltd/multi-clawd/v2.6.2/SETUP-AGENT.md
|
|
420
420
|
> and follow it to set up multi-clawd on this machine. I own a second
|
|
421
421
|
> Claude account — ask me when you need me to log in.
|
|
422
422
|
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "multi-clawd",
|
|
3
3
|
"name": "multi-clawd",
|
|
4
|
-
"version": "2.6.
|
|
4
|
+
"version": "2.6.2",
|
|
5
5
|
"description": "Register additional Claude Code logins (Max/Pro accounts) as first-class OpenClaw CLI backends for cross-account failover, keeping the full skills/MCP harness on every account.",
|
|
6
6
|
"cliBackends": [
|
|
7
7
|
"claw1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drakon-systems/multi-clawd",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Multi-account Claude Code failover for OpenClaw — register additional Claude (Max/Pro) logins as first-class CLI backends and keep the full skills/MCP harness across every account. Also imports those accounts' setup tokens into Hermes Agent's Anthropic credential pool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/scripts/doctor.mjs
CHANGED
|
@@ -1055,17 +1055,35 @@ if (accounts.some((a) => a && a.direct !== undefined && a.direct !== false)) {
|
|
|
1055
1055
|
// ── 9. watchdog ─────────────────────────────────────────────────────────────
|
|
1056
1056
|
console.log("eviction watchdog");
|
|
1057
1057
|
let watchdogFound = false;
|
|
1058
|
+
// A scheduler query that FAILS (no user session bus, no systemd, container)
|
|
1059
|
+
// says nothing about whether a watchdog exists. Only a query that succeeded
|
|
1060
|
+
// can confirm absence. Tool stderr is never inherited: it is raw noise.
|
|
1061
|
+
let watchdogQueried = false;
|
|
1062
|
+
const WATCHDOG_NAME = /multi-?clawd|eviction/;
|
|
1058
1063
|
try {
|
|
1059
|
-
const out = execFileSync("launchctl", ["list"], { encoding: "utf8" });
|
|
1064
|
+
const out = execFileSync("launchctl", ["list"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
|
|
1065
|
+
watchdogQueried = true;
|
|
1060
1066
|
if (out.includes("multiclawd")) watchdogFound = true;
|
|
1061
1067
|
} catch {
|
|
1062
|
-
/* not macOS */
|
|
1068
|
+
/* not macOS, or launchctl could not be queried */
|
|
1063
1069
|
}
|
|
1064
1070
|
try {
|
|
1065
|
-
const out = execFileSync("systemctl", ["--user", "list-timers", "--all"], { encoding: "utf8" });
|
|
1066
|
-
|
|
1071
|
+
const out = execFileSync("systemctl", ["--user", "list-timers", "--all"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
|
|
1072
|
+
watchdogQueried = true;
|
|
1073
|
+
if (WATCHDOG_NAME.test(out)) watchdogFound = true;
|
|
1067
1074
|
} catch {
|
|
1068
|
-
/* not systemd */
|
|
1075
|
+
/* not systemd, or the user manager could not be queried */
|
|
1076
|
+
}
|
|
1077
|
+
if (!watchdogFound && !watchdogQueried) {
|
|
1078
|
+
// Query unavailable: fall back to the unit files on disk, which need no
|
|
1079
|
+
// running manager.
|
|
1080
|
+
for (const d of [join(HOME, "Library", "LaunchAgents"), join(HOME, ".config", "systemd", "user")]) {
|
|
1081
|
+
try {
|
|
1082
|
+
if (readdirSync(d).some((f) => /\.(plist|service|timer)$/.test(f) && WATCHDOG_NAME.test(f))) watchdogFound = true;
|
|
1083
|
+
} catch {
|
|
1084
|
+
/* no such directory */
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1069
1087
|
}
|
|
1070
1088
|
if (watchdogFound) {
|
|
1071
1089
|
// "Scheduled" is not enough: the unit points at a script INSIDE an install
|
|
@@ -1108,7 +1126,11 @@ if (watchdogFound) {
|
|
|
1108
1126
|
`watchdog unit ${orphan.file} points at a MISSING script (${orphan.target}) — it fails silently every tick. Repoint it at ${join(EXT_DIR, "scripts", "eviction-watchdog.mjs")} or run the setup wizard to repair.`,
|
|
1109
1127
|
);
|
|
1110
1128
|
} else ok("watchdog scheduled");
|
|
1111
|
-
} else
|
|
1129
|
+
} else if (watchdogQueried) {
|
|
1130
|
+
warn("no watchdog found (needed until openclaw#107596 ships — see README)");
|
|
1131
|
+
} else {
|
|
1132
|
+
note("could not query the scheduler (no user session or no systemd/launchd) and found no watchdog unit file — watchdog state unknown. Run doctor from a normal login session to confirm.");
|
|
1133
|
+
}
|
|
1112
1134
|
|
|
1113
1135
|
// ── 10. optional live probe ─────────────────────────────────────────────────
|
|
1114
1136
|
if (args.has("--probe")) {
|