@perkos/perkos-a2a 0.12.34 → 0.12.36

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.
@@ -18,6 +18,7 @@ export declare class OpenClawSupervisorClient {
18
18
  private readonly logger;
19
19
  private readonly handlers;
20
20
  private readonly supervisorCliPath?;
21
+ private readonly spawnSupervisor?;
21
22
  private readonly lease;
22
23
  private socket;
23
24
  private startPromise;
@@ -35,11 +36,25 @@ export declare class OpenClawSupervisorClient {
35
36
  logger: Logger;
36
37
  handlers: OpenClawSupervisorHandlers;
37
38
  supervisorCliPath?: string;
39
+ /** Test hook for starting the target supervisor without spawning a process. */
40
+ spawnSupervisor?: () => Promise<void>;
38
41
  });
39
42
  isConnected(): boolean;
40
43
  isChatConnected(): boolean;
41
44
  currentHealth(): SupervisorHealth | null;
42
45
  start(): Promise<void>;
46
+ private claimCurrentSupervisor;
47
+ private healthMatchesTarget;
48
+ private rolloverSupervisor;
49
+ /**
50
+ * OpenClaw can register two adjacent hot-reload generations while its config
51
+ * file is settling. The first generation may successfully bootstrap the
52
+ * target supervisor just as its client socket is replaced. Reconnect to that
53
+ * single fenced supervisor instead of abandoning the agent offline.
54
+ */
55
+ private claimTargetAfterRollover;
56
+ private acquireRolloverLock;
57
+ private waitForSupervisorStop;
43
58
  stop(): Promise<void>;
44
59
  stopAndWait(): Promise<{
45
60
  closeTimedOut: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-supervisor-client.d.ts","sourceRoot":"","sources":["../src/openclaw-supervisor-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw-supervisor-client.d.ts","sourceRoot":"","sources":["../src/openclaw-supervisor-client.ts"],"names":[],"mappings":"AAQA,OAAO,EAWL,KAAK,gBAAgB,EAGrB,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnG,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CAAC;AAc1F,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvF,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAQ;gBAEX,KAAK,EAAE;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,uBAAuB,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,0BAA0B,CAAC;QACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,+EAA+E;QAC/E,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACvC;IAsBD,WAAW,IAAI,OAAO;IAItB,eAAe,IAAI,OAAO;IAI1B,aAAa,IAAI,gBAAgB,GAAG,IAAI;IAIxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;IA0ChC;;;;;OAKG;YACW,wBAAwB;YA0BxB,mBAAmB;YA6CnB,qBAAqB;IAenC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCf,WAAW,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IAKlD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvG,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI5C,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIzE,aAAa,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;YAI7I,OAAO;YAKP,kBAAkB;IAkBhC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,KAAK;YAKC,cAAc;IAyC5B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,aAAa;YA4CP,WAAW;IAwCzB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,WAAW;CAYpB"}
@@ -1,11 +1,20 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { spawn } from "node:child_process";
3
- import { existsSync, readFileSync, unlinkSync } from "node:fs";
3
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, realpathSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { homedir } from "node:os";
5
5
  import net from "node:net";
6
- import { resolve } from "node:path";
6
+ import { dirname, resolve } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
- import { SUPERVISOR_PROTOCOL_VERSION, SUPERVISOR_RENEW_MS, currentBootId, encodeSupervisorMessage, processStartIdentity, supervisorBootstrapPath, supervisorSocketPath, } from "./supervisor-protocol.js";
8
+ import { SUPERVISOR_PROTOCOL_VERSION, SUPERVISOR_RENEW_MS, currentBootId, encodeSupervisorMessage, processStartIdentity, supervisorBootstrapPath, supervisorRolloverLockPath, supervisorSocketPath, } from "./supervisor-protocol.js";
9
+ function processIsAlive(pid) {
10
+ try {
11
+ process.kill(pid, 0);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
9
18
  export class OpenClawSupervisorClient {
10
19
  stateDir;
11
20
  ownerHash;
@@ -14,6 +23,7 @@ export class OpenClawSupervisorClient {
14
23
  logger;
15
24
  handlers;
16
25
  supervisorCliPath;
26
+ spawnSupervisor;
17
27
  lease;
18
28
  socket = null;
19
29
  startPromise = null;
@@ -26,10 +36,16 @@ export class OpenClawSupervisorClient {
26
36
  this.stateDir = resolve(input.stateDir ?? process.env.OPENCLAW_STATE_DIR ?? `${homedir()}/.openclaw`);
27
37
  this.ownerHash = input.ownerHash;
28
38
  this.socketPath = supervisorSocketPath(this.stateDir, this.ownerHash);
29
- this.config = input.config;
39
+ let installRoot = resolve(input.config.installRoot);
40
+ try {
41
+ installRoot = realpathSync(installRoot);
42
+ }
43
+ catch { /* claim will fail closed if target is absent */ }
44
+ this.config = { ...input.config, installRoot };
30
45
  this.logger = input.logger;
31
46
  this.handlers = input.handlers;
32
47
  this.supervisorCliPath = input.supervisorCliPath;
48
+ this.spawnSupervisor = input.spawnSupervisor;
33
49
  this.lease = {
34
50
  ownerKey: input.ownerHash,
35
51
  instanceId: input.instanceId,
@@ -57,13 +73,18 @@ export class OpenClawSupervisorClient {
57
73
  this.stopped = false;
58
74
  const starting = (async () => {
59
75
  await this.connectOrSpawn();
60
- const claim = await this.requestWithMessage({
61
- protocolVersion: 2,
62
- type: "claim",
63
- requestId: randomUUID(),
64
- lease: this.freshLease(),
65
- config: this.config,
66
- }, 15_000);
76
+ let claim;
77
+ try {
78
+ claim = await this.claimCurrentSupervisor();
79
+ }
80
+ catch (error) {
81
+ if (!String(error).includes("SUPERVISOR_TARGET_MISMATCH"))
82
+ throw error;
83
+ claim = await this.rolloverSupervisor("target-mismatch");
84
+ }
85
+ if (!this.healthMatchesTarget(claim.health)) {
86
+ claim = await this.rolloverSupervisor("legacy-health-missing-target");
87
+ }
67
88
  const health = claim?.health;
68
89
  if (claim?.state !== "READY"
69
90
  || health?.schemaVersion !== 2
@@ -72,6 +93,7 @@ export class OpenClawSupervisorClient {
72
93
  || health.ownerKey !== this.ownerHash
73
94
  || health.instanceId !== this.lease.instanceId
74
95
  || health.generation !== this.lease.generation
96
+ || !this.healthMatchesTarget(health)
75
97
  || health.relayClientCount !== (this.config.relay?.enabled && this.config.relay.url ? 1 : 0)
76
98
  || !health.claimedAt) {
77
99
  throw new Error("OWNERSHIP_PRIMITIVE_UNAVAILABLE:supervisor claim did not return certified READY/CLAIMED health");
@@ -87,6 +109,166 @@ export class OpenClawSupervisorClient {
87
109
  this.startPromise = starting;
88
110
  return starting;
89
111
  }
112
+ claimCurrentSupervisor() {
113
+ return this.requestWithMessage({
114
+ protocolVersion: 2,
115
+ type: "claim",
116
+ requestId: randomUUID(),
117
+ lease: this.freshLease(),
118
+ config: this.config,
119
+ }, 15_000);
120
+ }
121
+ healthMatchesTarget(health) {
122
+ if (!health || health.targetVersion !== this.config.version || !health.installRoot)
123
+ return false;
124
+ let healthRoot = resolve(health.installRoot);
125
+ try {
126
+ healthRoot = realpathSync(healthRoot);
127
+ }
128
+ catch { /* mismatch below */ }
129
+ return healthRoot === this.config.installRoot;
130
+ }
131
+ async rolloverSupervisor(reason) {
132
+ const releaseLock = await this.acquireRolloverLock();
133
+ try {
134
+ // Another generation may have completed the rollover while this client
135
+ // waited for the filesystem fence. Reconnect and certify before stopping
136
+ // anything else.
137
+ this.closeSocket(new Error("SUPERVISOR_ROLLOVER_RECHECK"));
138
+ await this.connectOrSpawn();
139
+ try {
140
+ const current = await this.claimCurrentSupervisor();
141
+ if (this.healthMatchesTarget(current.health))
142
+ return current;
143
+ const stopped = await this.requestWithMessage({
144
+ protocolVersion: 2,
145
+ type: "release",
146
+ requestId: randomUUID(),
147
+ lease: this.freshLease(),
148
+ }, 8_000);
149
+ if (stopped?.state !== "STOPPED")
150
+ throw new Error("OWNER_STOP_TIMEOUT:legacy supervisor did not return STOPPED");
151
+ }
152
+ catch (error) {
153
+ if (!String(error).includes("SUPERVISOR_TARGET_MISMATCH"))
154
+ throw error;
155
+ const stopped = await this.requestWithMessage({
156
+ protocolVersion: 2,
157
+ type: "prepareRollover",
158
+ requestId: randomUUID(),
159
+ lease: this.freshLease(),
160
+ targetVersion: this.config.version,
161
+ targetInstallRoot: this.config.installRoot,
162
+ }, 8_000);
163
+ if (stopped?.state !== "STOPPED")
164
+ throw new Error("OWNER_STOP_TIMEOUT:supervisor rollover did not return STOPPED");
165
+ }
166
+ const oldHealth = this.health;
167
+ this.closeSocket(new Error("SUPERVISOR_ROLLOVER"));
168
+ await this.waitForSupervisorStop(oldHealth, 10_000);
169
+ const target = await this.claimTargetAfterRollover(reason);
170
+ this.logger.info(`[perkos-a2a] Supervisor rollover complete targetVersion=${this.config.version}`);
171
+ return target;
172
+ }
173
+ finally {
174
+ releaseLock();
175
+ }
176
+ }
177
+ /**
178
+ * OpenClaw can register two adjacent hot-reload generations while its config
179
+ * file is settling. The first generation may successfully bootstrap the
180
+ * target supervisor just as its client socket is replaced. Reconnect to that
181
+ * single fenced supervisor instead of abandoning the agent offline.
182
+ */
183
+ async claimTargetAfterRollover(reason) {
184
+ let lastError;
185
+ for (let attempt = 1; attempt <= 3; attempt += 1) {
186
+ try {
187
+ await this.connectOrSpawn();
188
+ const target = await this.claimCurrentSupervisor();
189
+ if (!this.healthMatchesTarget(target.health)) {
190
+ throw new Error(`SUPERVISOR_ROLLOVER_TARGET_MISMATCH:${reason}`);
191
+ }
192
+ return target;
193
+ }
194
+ catch (error) {
195
+ lastError = error;
196
+ this.closeSocket(new Error("SUPERVISOR_ROLLOVER_TARGET_RETRY"));
197
+ this.logger.error(`[perkos-a2a] Supervisor target claim retry ${attempt}/3: ${error instanceof Error ? error.message : String(error)}`);
198
+ if (attempt < 3)
199
+ await new Promise((resolveWait) => setTimeout(resolveWait, 250));
200
+ }
201
+ }
202
+ throw new Error(`SUPERVISOR_ROLLOVER_TARGET_START_FAILED:${lastError instanceof Error ? lastError.message : String(lastError)}`);
203
+ }
204
+ async acquireRolloverLock(timeoutMs = 15_000) {
205
+ const path = supervisorRolloverLockPath(this.stateDir, this.ownerHash);
206
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
207
+ const deadline = Date.now() + timeoutMs;
208
+ while (Date.now() < deadline) {
209
+ try {
210
+ const fd = openSync(path, "wx", 0o600);
211
+ writeFileSync(fd, `${JSON.stringify({
212
+ schemaVersion: 1,
213
+ instanceId: this.lease.instanceId,
214
+ pid: process.pid,
215
+ processStartTime: processStartIdentity(),
216
+ expiresAt: new Date(Date.now() + 20_000).toISOString(),
217
+ })}\n`);
218
+ closeSync(fd);
219
+ return () => {
220
+ try {
221
+ const lock = JSON.parse(readFileSync(path, "utf8"));
222
+ if (lock.instanceId === this.lease.instanceId)
223
+ unlinkSync(path);
224
+ }
225
+ catch { /* already released */ }
226
+ };
227
+ }
228
+ catch (error) {
229
+ if (error.code !== "EEXIST")
230
+ throw error;
231
+ try {
232
+ const lock = JSON.parse(readFileSync(path, "utf8"));
233
+ const expired = !lock.expiresAt || Date.parse(lock.expiresAt) <= Date.now();
234
+ const observedStart = lock.pid ? processStartIdentity(lock.pid) : "unknown";
235
+ const reusedLinuxPid = observedStart.startsWith("linux-start-ticks:")
236
+ && Boolean(lock.processStartTime?.startsWith("linux-start-ticks:"))
237
+ && observedStart !== lock.processStartTime;
238
+ const dead = !lock.pid || !processIsAlive(lock.pid) || reusedLinuxPid;
239
+ if (expired || dead) {
240
+ unlinkSync(path);
241
+ continue;
242
+ }
243
+ }
244
+ catch {
245
+ try {
246
+ unlinkSync(path);
247
+ }
248
+ catch { /* another generation won */ }
249
+ continue;
250
+ }
251
+ await new Promise((resolveWait) => setTimeout(resolveWait, 100));
252
+ }
253
+ }
254
+ throw new Error("ROLLOVER_LOCK_TIMEOUT");
255
+ }
256
+ async waitForSupervisorStop(health, timeoutMs) {
257
+ const deadline = Date.now() + timeoutMs;
258
+ while (Date.now() < deadline) {
259
+ const socketGone = !existsSync(this.socketPath);
260
+ const processGone = !health
261
+ || processStartIdentity(health.pid) !== health.supervisorStartTime;
262
+ if (socketGone && (processGone || health?.state === "stopped"))
263
+ return;
264
+ // On platforms without /proc, STOPPED plus socket removal is the
265
+ // strongest portable fence; the supervisor lock is removed on close.
266
+ if (socketGone && processStartIdentity(health?.pid ?? -1) === "unknown")
267
+ return;
268
+ await new Promise((resolveWait) => setTimeout(resolveWait, 100));
269
+ }
270
+ throw new Error("OWNER_STOP_TIMEOUT:old supervisor process/socket remained active");
271
+ }
90
272
  stop() {
91
273
  if (this.stopPromise)
92
274
  return this.stopPromise;
@@ -180,23 +362,27 @@ export class OpenClawSupervisorClient {
180
362
  }
181
363
  catch { /* spawn canonical supervisor */ }
182
364
  const cliPath = this.supervisorCliPath ?? fileURLToPath(new URL("./openclaw-supervisor-cli.js", import.meta.url));
183
- if (!existsSync(cliPath)) {
365
+ if (!this.spawnSupervisor && !existsSync(cliPath))
184
366
  throw new Error(`OWNERSHIP_PRIMITIVE_UNAVAILABLE:supervisor CLI is missing at ${cliPath}`);
185
- }
186
367
  const bootstrapPath = supervisorBootstrapPath(this.stateDir, this.ownerHash);
187
368
  try {
188
369
  unlinkSync(bootstrapPath);
189
370
  }
190
371
  catch { /* no prior bootstrap evidence */ }
191
372
  let childExit;
192
- const child = spawn(process.execPath, [cliPath, "--state-dir", this.stateDir, "--owner-key", this.ownerHash], {
193
- detached: true,
194
- stdio: "ignore",
195
- env: { ...process.env },
196
- });
197
- child.once("error", (error) => { childExit = `spawn error: ${error.message}`; });
198
- child.once("exit", (code, signal) => { childExit = `exit code=${code ?? "null"} signal=${signal ?? "none"}`; });
199
- child.unref();
373
+ if (this.spawnSupervisor) {
374
+ await this.spawnSupervisor();
375
+ }
376
+ else {
377
+ const child = spawn(process.execPath, [cliPath, "--state-dir", this.stateDir, "--owner-key", this.ownerHash], {
378
+ detached: true,
379
+ stdio: "ignore",
380
+ env: { ...process.env },
381
+ });
382
+ child.once("error", (error) => { childExit = `spawn error: ${error.message}`; });
383
+ child.once("exit", (code, signal) => { childExit = `exit code=${code ?? "null"} signal=${signal ?? "none"}`; });
384
+ child.unref();
385
+ }
200
386
  const deadline = Date.now() + 10_000;
201
387
  let lastError;
202
388
  while (Date.now() < deadline) {
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-supervisor-client.js","sourceRoot":"","sources":["../src/openclaw-supervisor-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw-supervisor-client.js","sourceRoot":"","sources":["../src/openclaw-supervisor-client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ type SupervisorLogger = {
2
2
  info: (...args: unknown[]) => void;
3
3
  error: (...args: unknown[]) => void;
4
4
  };
5
+ type SupervisorProcessIdentity = {
6
+ version: string;
7
+ installRoot: string;
8
+ };
5
9
  export declare class OpenClawSupervisor {
6
10
  private readonly stateDir;
7
11
  private readonly ownerHash;
@@ -9,6 +13,7 @@ export declare class OpenClawSupervisor {
9
13
  private readonly lockPath;
10
14
  private readonly logger;
11
15
  private readonly exitProcess;
16
+ private readonly runtimeIdentity;
12
17
  private server;
13
18
  private lockFd;
14
19
  private activeSocket;
@@ -27,12 +32,15 @@ export declare class OpenClawSupervisor {
27
32
  ownerHash: string;
28
33
  logger?: SupervisorLogger;
29
34
  exitProcess?: () => void;
35
+ /** Null is used only to emulate a pre-identity v2 supervisor in tests. */
36
+ runtimeIdentity?: SupervisorProcessIdentity | null;
30
37
  });
31
38
  listen(): Promise<void>;
32
39
  close(): Promise<void>;
33
40
  private acquireLock;
34
41
  private handleConnection;
35
42
  private handleLine;
43
+ private prepareRollover;
36
44
  private claim;
37
45
  private startTransports;
38
46
  private stopTransports;
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-supervisor.d.ts","sourceRoot":"","sources":["../src/openclaw-supervisor.ts"],"names":[],"mappings":"AA0BA,KAAK,gBAAgB,GAAG;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CAAC;AAmBpG,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,MAAM,CAAmB;gBAErB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE;IA0BzG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;YAqBV,UAAU;YAsCV,KAAK;YA8BL,eAAe;YAyEf,cAAc;YAuDd,aAAa;IA0B3B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;YAIJ,UAAU;IAYxB,OAAO,CAAC,YAAY;CAOrB"}
1
+ {"version":3,"file":"openclaw-supervisor.d.ts","sourceRoot":"","sources":["../src/openclaw-supervisor.ts"],"names":[],"mappings":"AA2BA,KAAK,gBAAgB,GAAG;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CAAC;AACpG,KAAK,yBAAyB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AA4B1E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,MAAM,CAAmB;gBAErB,KAAK,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;QACzB,0EAA0E;QAC1E,eAAe,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;KACpD;IAgCK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;YAqBV,UAAU;YA0CV,eAAe;YAgCf,KAAK;YA6CL,eAAe;YAyEf,cAAc;YAuDd,aAAa;IA0B3B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;YAIJ,UAAU;IAYxB,OAAO,CAAC,YAAY;CAOrB"}
@@ -1,12 +1,21 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
2
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, realpathSync, unlinkSync, writeFileSync } from "node:fs";
3
3
  import net from "node:net";
4
- import { dirname } from "node:path";
4
+ import { dirname, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
5
6
  import { ChatClient } from "./chat-client.js";
6
7
  import { startPlatformHeartbeat } from "./platform-heartbeat.js";
7
8
  import { RelayClient } from "./relay-client.js";
8
9
  import { runtimeHealthPath } from "./runtime-evidence.js";
9
10
  import { SUPERVISOR_LEASE_TTL_MS, SUPERVISOR_PROTOCOL_VERSION, currentBootId, encodeSupervisorMessage, processStartIdentity, supervisorHealthPath, supervisorLeasePath, supervisorSocketPath, writePrivateJsonAtomic, } from "./supervisor-protocol.js";
11
+ function loadedSupervisorIdentity() {
12
+ const installRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
13
+ const packageJson = JSON.parse(readFileSync(resolve(installRoot, "package.json"), "utf8"));
14
+ if (typeof packageJson.version !== "string" || !packageJson.version) {
15
+ throw new Error("SUPERVISOR_PACKAGE_IDENTITY_INVALID");
16
+ }
17
+ return { version: packageJson.version, installRoot: realpathSync(installRoot) };
18
+ }
10
19
  function leaseMatches(left, right) {
11
20
  return Boolean(left
12
21
  && left.ownerKey === right.ownerKey
@@ -30,6 +39,7 @@ export class OpenClawSupervisor {
30
39
  lockPath;
31
40
  logger;
32
41
  exitProcess;
42
+ runtimeIdentity;
33
43
  server = null;
34
44
  lockFd = null;
35
45
  activeSocket = null;
@@ -50,6 +60,10 @@ export class OpenClawSupervisor {
50
60
  this.lockPath = `${this.socketPath}.lock`;
51
61
  this.logger = input.logger ?? { info: console.log, error: console.error };
52
62
  this.exitProcess = input.exitProcess ?? (() => process.exit(0));
63
+ const runtimeIdentity = input.runtimeIdentity === undefined ? loadedSupervisorIdentity() : input.runtimeIdentity;
64
+ this.runtimeIdentity = runtimeIdentity
65
+ ? { ...runtimeIdentity, installRoot: realpathSync(resolve(runtimeIdentity.installRoot)) }
66
+ : null;
53
67
  this.health = {
54
68
  schemaVersion: 2,
55
69
  authority: "process-external-supervisor",
@@ -60,6 +74,8 @@ export class OpenClawSupervisor {
60
74
  pid: process.pid,
61
75
  supervisorStartTime: processStartIdentity(),
62
76
  bootId: currentBootId(),
77
+ targetVersion: this.runtimeIdentity?.version,
78
+ installRoot: this.runtimeIdentity?.installRoot,
63
79
  relayConnected: false,
64
80
  relayRegistered: false,
65
81
  relayClientCount: 0,
@@ -172,6 +188,10 @@ export class OpenClawSupervisor {
172
188
  await this.claim(socket, command.requestId, command.lease, command.config);
173
189
  return;
174
190
  }
191
+ if (command.type === "prepareRollover") {
192
+ await this.prepareRollover(socket, command);
193
+ return;
194
+ }
175
195
  if (!leaseMatches(this.activeLease, command.lease) || socket !== this.activeSocket) {
176
196
  if ("requestId" in command)
177
197
  this.respond(socket, command.requestId, false, undefined, "NOT_OWNER", "supervisor lease is not active");
@@ -197,11 +217,52 @@ export class OpenClawSupervisor {
197
217
  if (command.type === "request")
198
218
  await this.handleRequest(socket, command);
199
219
  }
220
+ async prepareRollover(socket, command) {
221
+ const active = this.activeLease;
222
+ if (command.lease.ownerKey !== this.ownerHash
223
+ || !parentAlive(command.lease)
224
+ || (active && command.lease.generation <= active.generation)) {
225
+ this.respond(socket, command.requestId, false, undefined, "ROLLOVER_FENCE_REJECTED", "rollover candidate is not a newer live owner generation");
226
+ return;
227
+ }
228
+ try {
229
+ await this.stopTransports("certified-upgrade-rollover");
230
+ }
231
+ catch {
232
+ this.respond(socket, command.requestId, false, undefined, "OWNER_STOP_TIMEOUT", "active supervisor transports did not stop cleanly");
233
+ return;
234
+ }
235
+ const previousOwnerSocket = this.activeSocket;
236
+ this.activeSocket = null;
237
+ this.activeLease = null;
238
+ if (previousOwnerSocket && previousOwnerSocket !== socket)
239
+ previousOwnerSocket.destroy();
240
+ this.respond(socket, command.requestId, true, {
241
+ state: "STOPPED",
242
+ targetVersion: command.targetVersion,
243
+ targetInstallRoot: command.targetInstallRoot,
244
+ health: this.health,
245
+ });
246
+ this.scheduleExit();
247
+ }
200
248
  async claim(socket, requestId, lease, config) {
201
249
  if (lease.ownerKey !== this.ownerHash) {
202
250
  this.respond(socket, requestId, false, undefined, "OWNER_KEY_MISMATCH", "claim owner does not match supervisor");
203
251
  return;
204
252
  }
253
+ if (this.runtimeIdentity) {
254
+ let requestedRoot;
255
+ try {
256
+ requestedRoot = realpathSync(config.installRoot);
257
+ }
258
+ catch {
259
+ requestedRoot = resolve(config.installRoot);
260
+ }
261
+ if (config.version !== this.runtimeIdentity.version || requestedRoot !== this.runtimeIdentity.installRoot) {
262
+ this.respond(socket, requestId, false, undefined, "SUPERVISOR_TARGET_MISMATCH", `running=${this.runtimeIdentity.version}@${this.runtimeIdentity.installRoot} requested=${config.version}@${requestedRoot}`);
263
+ return;
264
+ }
265
+ }
205
266
  if (this.exitTimer)
206
267
  clearTimeout(this.exitTimer);
207
268
  this.exitTimer = null;