@openclaw-cloud/agent-controller 2.3.2 → 2.4.0-beta.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.
@@ -17,8 +17,8 @@ const [,, command] = process.argv;
17
17
  if (command === '--version' || command === '-v') {
18
18
  console.log(pkg.version);
19
19
  } else if (command === 'self-update' || command === 'self_update' || command === 'update') {
20
- const { selfUpdate } = await import('../dist/commands/self-update.js');
21
- await selfUpdate(pkg.version);
20
+ const { runSelfUpdateCli } = await import('../dist/commands/self-update.js');
21
+ await runSelfUpdateCli(pkg.version);
22
22
  } else if (command === 'backup') {
23
23
  const { runBackup } = await import('../dist/commands/backup-cli.js');
24
24
  await runBackup();
@@ -1 +1,46 @@
1
+ import { type InstallPluginsResult } from '../utils/openclaw-ops.js';
2
+ export interface SelfUpdatePayload {
3
+ agentController?: {
4
+ version: string;
5
+ };
6
+ openclaw?: {
7
+ version: string;
8
+ plugins?: Array<{
9
+ id: string;
10
+ version: string;
11
+ }>;
12
+ };
13
+ }
14
+ export interface RunExplicitSelfUpdateResult {
15
+ runtimeChanged: boolean;
16
+ pluginSummary?: InstallPluginsResult;
17
+ gatewayRestarted: boolean;
18
+ acChanged: boolean;
19
+ }
20
+ /**
21
+ * Run the explicit-version self-update flow. Throws when `installOpenclaw`
22
+ * or `installAcSelf` fail outright — per-plugin failures are recorded in
23
+ * the result rather than thrown. The caller is responsible for translating
24
+ * thrown errors into an AgentResponse / process exit.
25
+ *
26
+ * IMPORTANT: when `acChanged` is true, this function does NOT call
27
+ * `removeLockFile()` and does NOT sleep — both are now the caller's job
28
+ * (handler defers them to the next tick AFTER `api.publishResponse` so the
29
+ * backend sees a real `success: true` response before the supervisor picks
30
+ * up the missing lock and restarts the process). The CLI entrypoint
31
+ * (`runSelfUpdateCli`) handles this directly since there's no response to
32
+ * publish.
33
+ */
34
+ export declare function runExplicitSelfUpdate(currentVersion: string, payload: SelfUpdatePayload): Promise<RunExplicitSelfUpdateResult>;
1
35
  export declare function selfUpdate(currentVersion: string): Promise<void>;
36
+ /**
37
+ * Top-level CLI entrypoint invoked by `agent-controller self-update`.
38
+ * Tries the new explicit-payload flow first; falls back to legacy when
39
+ * the backend has no runtime-targets endpoint or no override configured.
40
+ *
41
+ * Unlike the WS handler path (handlers/self-update.ts), the CLI has no
42
+ * AgentResponse to publish, so we keep the original
43
+ * `removeLockFile() + sleep(30s)` tail when the agent-controller actually
44
+ * changed — that's the supervisor handoff signal.
45
+ */
46
+ export declare function runSelfUpdateCli(currentVersion: string): Promise<void>;
@@ -2,46 +2,144 @@ import { execAsync } from '../utils/exec.js';
2
2
  import { removeLockFile } from '../lockfile.js';
3
3
  import { getReleaseChannel } from '../utils/release-channel.js';
4
4
  import { config } from '../config.js';
5
- const PACKAGE_NAME = '@openclaw-cloud/agent-controller';
6
- async function fixNpmPermissions() {
7
- const home = config.home;
8
- console.log('Fixing npm permissions (root-owned files from previous installs)...');
9
- // Fix both cache (.npm) and global prefix (.npm-global)
10
- await execAsync(`sudo chown -R $(id -u):$(id -g) "${home}/.npm" "${home}/.npm-global" 2>/dev/null || true`, 30_000);
11
- }
12
- async function withEaccesRetry(fn, label) {
13
- try {
14
- return await fn();
15
- }
16
- catch (err) {
17
- if (err instanceof Error && err.message.includes('EACCES')) {
18
- await fixNpmPermissions();
5
+ import { withEaccesRetry, installOpenclaw, installPlugins, installAcSelf, AC_PACKAGE, } from '../utils/openclaw-ops.js';
6
+ import { restartGateway } from '../utils/gateway-restart.js';
7
+ import { logCollector } from '../connection.js';
8
+ import { toErrorMessage } from '../utils/response.js';
9
+ /**
10
+ * Run the explicit-version self-update flow. Throws when `installOpenclaw`
11
+ * or `installAcSelf` fail outright — per-plugin failures are recorded in
12
+ * the result rather than thrown. The caller is responsible for translating
13
+ * thrown errors into an AgentResponse / process exit.
14
+ *
15
+ * IMPORTANT: when `acChanged` is true, this function does NOT call
16
+ * `removeLockFile()` and does NOT sleep — both are now the caller's job
17
+ * (handler defers them to the next tick AFTER `api.publishResponse` so the
18
+ * backend sees a real `success: true` response before the supervisor picks
19
+ * up the missing lock and restarts the process). The CLI entrypoint
20
+ * (`runSelfUpdateCli`) handles this directly since there's no response to
21
+ * publish.
22
+ */
23
+ export async function runExplicitSelfUpdate(currentVersion, payload) {
24
+ let runtimeChanged = false;
25
+ let pluginSummary;
26
+ let gatewayRestarted = false;
27
+ let acChanged = false;
28
+ logCollector?.push('self_update_install_start', 'info', `Self-update install starting (current AC: ${currentVersion})`, {
29
+ currentVersion,
30
+ targetAc: payload.agentController?.version,
31
+ targetOpenclaw: payload.openclaw?.version,
32
+ pluginCount: payload.openclaw?.plugins?.length ?? 0,
33
+ });
34
+ // 1) openclaw runtime + plugins (one gateway restart at the end)
35
+ if (payload.openclaw) {
36
+ runtimeChanged = await installOpenclaw(payload.openclaw.version);
37
+ if (runtimeChanged) {
38
+ logCollector?.push('self_update_runtime_installed', 'info', `openclaw runtime installed at ${payload.openclaw.version}`, { version: payload.openclaw.version });
39
+ }
40
+ if (payload.openclaw.plugins?.length) {
41
+ logCollector?.push('self_update_plugin_install_start', 'info', `Installing ${payload.openclaw.plugins.length} plugin(s)`, { pluginCount: payload.openclaw.plugins.length });
42
+ pluginSummary = await installPlugins(payload.openclaw.plugins);
43
+ logCollector?.push('self_update_plugin_install_done', pluginSummary.failed.length > 0 ? 'warn' : 'info', `Plugin install complete: ${pluginSummary.installed.length} installed, ${pluginSummary.skipped.length} skipped, ${pluginSummary.failed.length} failed`, {
44
+ installed: pluginSummary.installed,
45
+ skipped: pluginSummary.skipped,
46
+ failed: pluginSummary.failed,
47
+ });
48
+ }
49
+ const anyChanged = runtimeChanged || (pluginSummary?.installed.length ?? 0) > 0;
50
+ if (anyChanged) {
19
51
  try {
20
- return await fn();
52
+ await restartGateway();
53
+ gatewayRestarted = true;
54
+ logCollector?.push('self_update_gateway_restarted', 'info', 'Gateway restarted after openclaw stack update', {});
21
55
  }
22
- catch (retryErr) {
23
- console.error(`${label} failed after permission fix:`, retryErr instanceof Error ? retryErr.message : retryErr);
24
- throw retryErr;
56
+ catch (err) {
57
+ logCollector?.push('self_update_gateway_restart_failed', 'warn', `Gateway restart after openclaw stack update failed: ${toErrorMessage(err)}`, { error: toErrorMessage(err) });
25
58
  }
26
59
  }
27
- console.error(`${label} failed:`, err instanceof Error ? err.message : err);
28
- throw err;
29
60
  }
61
+ // 2) agent-controller swap LAST. Note: we run `npm install -g` here but
62
+ // do NOT remove the lockfile or sleep — the WS handler defers that
63
+ // work until AFTER the AgentResponse is published. The CLI path runs
64
+ // this same function and handles the lockfile + sleep itself.
65
+ if (payload.agentController?.version) {
66
+ acChanged = await installAcSelf(payload.agentController.version, currentVersion);
67
+ if (acChanged) {
68
+ logCollector?.push('self_update_ac_installed', 'info', `agent-controller installed at ${payload.agentController.version}`, { version: payload.agentController.version, previousVersion: currentVersion });
69
+ }
70
+ }
71
+ return { runtimeChanged, pluginSummary, gatewayRestarted, acChanged };
30
72
  }
73
+ // ---------------------------------------------------------------------------
74
+ // Legacy channel-based path — preserved for old backends that publish
75
+ // `self_update` with an empty payload (and for the CLI fallback when the
76
+ // runtime-targets endpoint is unreachable).
77
+ // ---------------------------------------------------------------------------
31
78
  export async function selfUpdate(currentVersion) {
32
79
  const channel = getReleaseChannel();
33
80
  const tag = channel === 'stable' ? 'latest' : channel;
34
81
  console.log(`Current version: ${currentVersion} (channel: ${channel})`);
35
- const latestVersion = await withEaccesRetry(() => execAsync(`npm view ${PACKAGE_NAME}@${tag} version`, 10_000), 'Fetch latest version');
82
+ const latestVersion = await withEaccesRetry(() => execAsync(`npm view ${AC_PACKAGE}@${tag} version`, 10_000), 'Fetch latest version');
36
83
  console.log(`Latest version on ${tag}: ${latestVersion}`);
37
84
  if (currentVersion === latestVersion) {
38
85
  console.log('Already up to date.');
39
86
  return;
40
87
  }
41
88
  console.log(`Updating from ${currentVersion} to ${latestVersion}...`);
42
- await withEaccesRetry(() => execAsync(`npm install -g ${PACKAGE_NAME}@${tag}`, 120_000), 'npm install -g');
89
+ await withEaccesRetry(() => execAsync(`npm install -g ${AC_PACKAGE}@${tag}`, 120_000), 'npm install -g');
43
90
  console.log(`Successfully updated to ${latestVersion}. Removing lock file for graceful restart...`);
44
91
  removeLockFile();
45
92
  await new Promise((resolve) => setTimeout(resolve, 30_000));
46
93
  }
94
+ // ---------------------------------------------------------------------------
95
+ // CLI entrypoint — try the new on-demand /api/agent/runtime-targets path
96
+ // first; fall back to the legacy channel-based path if the backend is
97
+ // unreachable, returns an empty payload, or returns a non-2xx response.
98
+ // ---------------------------------------------------------------------------
99
+ async function fetchRuntimeTargets() {
100
+ const backendUrl = config.backendUrl;
101
+ const token = config.agentToken;
102
+ if (!backendUrl || !token)
103
+ return null;
104
+ try {
105
+ const res = await fetch(`${backendUrl}/api/agent/runtime-targets`, {
106
+ headers: { Authorization: `Bearer ${token}` },
107
+ signal: AbortSignal.timeout(10_000),
108
+ });
109
+ if (!res.ok)
110
+ return null;
111
+ const data = (await res.json());
112
+ if (!data || (!data.openclaw && !data.agentController))
113
+ return null;
114
+ return data;
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
120
+ /**
121
+ * Top-level CLI entrypoint invoked by `agent-controller self-update`.
122
+ * Tries the new explicit-payload flow first; falls back to legacy when
123
+ * the backend has no runtime-targets endpoint or no override configured.
124
+ *
125
+ * Unlike the WS handler path (handlers/self-update.ts), the CLI has no
126
+ * AgentResponse to publish, so we keep the original
127
+ * `removeLockFile() + sleep(30s)` tail when the agent-controller actually
128
+ * changed — that's the supervisor handoff signal.
129
+ */
130
+ export async function runSelfUpdateCli(currentVersion) {
131
+ const targets = await fetchRuntimeTargets();
132
+ if (targets) {
133
+ console.log('Using runtime targets from backend (explicit self-update path)');
134
+ const result = await runExplicitSelfUpdate(currentVersion, targets);
135
+ if (result.acChanged) {
136
+ console.log(`Successfully updated agent-controller to ${targets.agentController?.version}. Removing lock file for graceful restart...`);
137
+ removeLockFile();
138
+ await new Promise((resolve) => setTimeout(resolve, 30_000));
139
+ }
140
+ return;
141
+ }
142
+ console.log('No runtime targets from backend — falling back to channel-based update');
143
+ await selfUpdate(currentVersion);
144
+ }
47
145
  //# sourceMappingURL=self-update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAExD,KAAK,UAAU,iBAAiB;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,wDAAwD;IACxD,MAAM,SAAS,CACb,oCAAoC,IAAI,WAAW,IAAI,mCAAmC,EAC1F,MAAM,CACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAI,EAAoB,EAAE,KAAa;IACnE,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,MAAM,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CACX,GAAG,KAAK,+BAA+B,EACvC,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACxD,CAAC;gBACF,MAAM,QAAQ,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5E,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,cAAsB;IACrD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,cAAc,cAAc,OAAO,GAAG,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,MAAM,eAAe,CACzC,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,YAAY,IAAI,GAAG,UAAU,EAAE,MAAM,CAAC,EAClE,sBAAsB,CACvB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,aAAa,EAAE,CAAC,CAAC;IAE1D,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,cAAc,OAAO,aAAa,KAAK,CAAC,CAAC;IACtE,MAAM,eAAe,CACnB,GAAG,EAAE,CAAC,SAAS,CAAC,kBAAkB,YAAY,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,EACjE,gBAAgB,CACjB,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,2BAA2B,aAAa,8CAA8C,CACvF,CAAC;IACF,cAAc,EAAE,CAAC;IACjB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ import { handleFileDelete } from './handlers/file-delete.js';
14
14
  import { handleOnboardingComplete } from './handlers/onboarding.js';
15
15
  import { handleKnowledgeSync } from './handlers/knowledge-sync.js';
16
16
  import { handleSelfUpdate } from './handlers/self-update.js';
17
+ import { handlePluginUpdate } from './handlers/plugin-update.js';
18
+ import { handleAgentUpdate } from './handlers/agent-update.js';
17
19
  import { handleTelegramWebhook } from './handlers/telegram-webhook.js';
18
20
  import { handleUpdateSkills } from './handlers/update-skills.js';
19
21
  import { handleUpdateConfig } from './handlers/update-config.js';
@@ -51,6 +53,8 @@ function buildHandlers(opts) {
51
53
  onboarding_complete: handleOnboardingComplete,
52
54
  knowledge_sync: (cmd) => handleKnowledgeSync(cmd, opts.api, opts.agentId),
53
55
  self_update: handleSelfUpdate(opts.version),
56
+ plugin_update: handlePluginUpdate,
57
+ agent_update: handleAgentUpdate,
54
58
  telegram_webhook: handleTelegramWebhook,
55
59
  update_skills: handleUpdateSkills,
56
60
  update_config: handleUpdateConfig(opts.api, opts.agentId),
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AgentCommand, AgentResponse } from '../types.js';
2
+ /**
3
+ * Update the openclaw runtime + (optionally) a batch of plugins.
4
+ * payload: { version: string, plugins?: Array<{ id, version }> }
5
+ *
6
+ * Behaviour:
7
+ * 1. Validate `version` (return success:false on bad input — never throw).
8
+ * 2. installOpenclaw(version). Skip if `openclaw --version` matches.
9
+ * 3. If `plugins[]`, run installPlugins() — sequential, per-plugin
10
+ * try/catch so a poison-pill plugin doesn't abort the whole batch.
11
+ * 4. If anything actually changed → restartGateway(). One restart per
12
+ * command, regardless of how many things changed. Restart failure is
13
+ * a warn — install already succeeded.
14
+ *
15
+ * Per-plugin failures are recorded in `data.failed[]` but DO NOT flip the
16
+ * top-level success flag. A whole-flow failure (e.g. installOpenclaw throws)
17
+ * does flip success to false.
18
+ */
19
+ export declare function handleAgentUpdate(cmd: AgentCommand): Promise<AgentResponse>;
@@ -0,0 +1,108 @@
1
+ import { logCollector } from '../connection.js';
2
+ import { toErrorMessage } from '../utils/response.js';
3
+ import { installOpenclaw, installPlugins, } from '../utils/openclaw-ops.js';
4
+ import { restartGateway } from '../utils/gateway-restart.js';
5
+ /**
6
+ * Update the openclaw runtime + (optionally) a batch of plugins.
7
+ * payload: { version: string, plugins?: Array<{ id, version }> }
8
+ *
9
+ * Behaviour:
10
+ * 1. Validate `version` (return success:false on bad input — never throw).
11
+ * 2. installOpenclaw(version). Skip if `openclaw --version` matches.
12
+ * 3. If `plugins[]`, run installPlugins() — sequential, per-plugin
13
+ * try/catch so a poison-pill plugin doesn't abort the whole batch.
14
+ * 4. If anything actually changed → restartGateway(). One restart per
15
+ * command, regardless of how many things changed. Restart failure is
16
+ * a warn — install already succeeded.
17
+ *
18
+ * Per-plugin failures are recorded in `data.failed[]` but DO NOT flip the
19
+ * top-level success flag. A whole-flow failure (e.g. installOpenclaw throws)
20
+ * does flip success to false.
21
+ */
22
+ export async function handleAgentUpdate(cmd) {
23
+ const startMs = Date.now();
24
+ const payload = (cmd.payload ?? {});
25
+ const version = typeof payload.version === 'string' ? payload.version.trim() : '';
26
+ const plugins = Array.isArray(payload.plugins)
27
+ ? payload.plugins
28
+ : undefined;
29
+ logCollector?.push('agent_update_received', 'info', 'Agent update requested', {
30
+ commandId: cmd.id,
31
+ version,
32
+ pluginCount: plugins?.length ?? 0,
33
+ });
34
+ if (!version) {
35
+ return {
36
+ id: cmd.id,
37
+ type: cmd.type,
38
+ success: false,
39
+ error: 'agent_update payload requires non-empty `version`',
40
+ };
41
+ }
42
+ let runtimeChanged = false;
43
+ let pluginSummary;
44
+ try {
45
+ runtimeChanged = await installOpenclaw(version);
46
+ logCollector?.push(runtimeChanged ? 'agent_update_runtime_installed' : 'agent_update_runtime_skipped', 'info', runtimeChanged
47
+ ? `openclaw runtime installed at ${version}`
48
+ : `openclaw runtime already at ${version}`, { commandId: cmd.id, version });
49
+ }
50
+ catch (err) {
51
+ return {
52
+ id: cmd.id,
53
+ type: cmd.type,
54
+ success: false,
55
+ error: toErrorMessage(err),
56
+ };
57
+ }
58
+ if (plugins?.length) {
59
+ try {
60
+ pluginSummary = await installPlugins(plugins);
61
+ logCollector?.push('agent_update_plugins_done', 'info', 'Plugin batch processed', {
62
+ commandId: cmd.id,
63
+ installed: pluginSummary.installed.length,
64
+ skipped: pluginSummary.skipped.length,
65
+ failed: pluginSummary.failed.length,
66
+ });
67
+ }
68
+ catch (err) {
69
+ // installPlugins is supposed to swallow per-plugin errors; if it
70
+ // throws something globally, surface it.
71
+ return {
72
+ id: cmd.id,
73
+ type: cmd.type,
74
+ success: false,
75
+ error: toErrorMessage(err),
76
+ };
77
+ }
78
+ }
79
+ const installedPluginCount = pluginSummary?.installed.length ?? 0;
80
+ const anyChanged = runtimeChanged || installedPluginCount > 0;
81
+ let restarted = false;
82
+ let restartFailed = false;
83
+ if (anyChanged) {
84
+ try {
85
+ await restartGateway();
86
+ restarted = true;
87
+ }
88
+ catch (err) {
89
+ restartFailed = true;
90
+ logCollector?.push('agent_update_restart_failed', 'warn', 'Gateway restart after agent_update failed', { commandId: cmd.id, error: toErrorMessage(err) });
91
+ }
92
+ }
93
+ return {
94
+ id: cmd.id,
95
+ type: cmd.type,
96
+ success: true,
97
+ data: {
98
+ version,
99
+ runtimeChanged,
100
+ installed: pluginSummary?.installed ?? [],
101
+ skipped: pluginSummary?.skipped ?? [],
102
+ failed: pluginSummary?.failed ?? [],
103
+ restarted: anyChanged && !restartFailed && restarted,
104
+ durationMs: Date.now() - startMs,
105
+ },
106
+ };
107
+ }
108
+ //# sourceMappingURL=agent-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-update.js","sourceRoot":"","sources":["../../src/handlers/agent-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,cAAc,GAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAiB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAGjC,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5C,CAAC,CAAE,OAAO,CAAC,OAAkD;QAC7D,CAAC,CAAC,SAAS,CAAC;IAEd,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,EAAE,wBAAwB,EAAE;QAC5E,SAAS,EAAE,GAAG,CAAC,EAAE;QACjB,OAAO;QACP,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mDAAmD;SAC3D,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAA+C,CAAC;IAEpD,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAChD,YAAY,EAAE,IAAI,CAChB,cAAc,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,8BAA8B,EAClF,MAAM,EACN,cAAc;YACZ,CAAC,CAAC,iCAAiC,OAAO,EAAE;YAC5C,CAAC,CAAC,+BAA+B,OAAO,EAAE,EAC5C,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,CAC/B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9C,YAAY,EAAE,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,wBAAwB,EAAE;gBAChF,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;gBACzC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;gBACrC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iEAAiE;YACjE,yCAAyC;YACzC,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,oBAAoB,GAAG,aAAa,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,cAAc,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC9D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,cAAc,EAAE,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,GAAG,IAAI,CAAC;YACrB,YAAY,EAAE,IAAI,CAChB,6BAA6B,EAC7B,MAAM,EACN,2CAA2C,EAC3C,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,IAAI;QACb,IAAI,EAAE;YACJ,OAAO;YACP,cAAc;YACd,SAAS,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE;YACzC,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,EAAE;YACrC,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,EAAE;YACnC,SAAS,EAAE,UAAU,IAAI,CAAC,aAAa,IAAI,SAAS;YACpD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;SACjC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AgentCommand, AgentResponse } from '../types.js';
2
+ /**
3
+ * Single-plugin update handler.
4
+ * payload: { id: string, version: string }
5
+ *
6
+ * Behaviour:
7
+ * 1. Validate payload (return success:false on bad input — never throw).
8
+ * 2. installPlugin(id, version). The helper skip-fast when the requested
9
+ * version is already installed.
10
+ * 3. If an install actually ran, restartGateway(). Restart failures are
11
+ * logged at warn level but do NOT flip the response to failure — the
12
+ * install succeeded; restart is best-effort.
13
+ */
14
+ export declare function handlePluginUpdate(cmd: AgentCommand): Promise<AgentResponse>;
@@ -0,0 +1,91 @@
1
+ import { logCollector } from '../connection.js';
2
+ import { toErrorMessage } from '../utils/response.js';
3
+ import { installPlugin } from '../utils/openclaw-ops.js';
4
+ import { restartGateway } from '../utils/gateway-restart.js';
5
+ /**
6
+ * Single-plugin update handler.
7
+ * payload: { id: string, version: string }
8
+ *
9
+ * Behaviour:
10
+ * 1. Validate payload (return success:false on bad input — never throw).
11
+ * 2. installPlugin(id, version). The helper skip-fast when the requested
12
+ * version is already installed.
13
+ * 3. If an install actually ran, restartGateway(). Restart failures are
14
+ * logged at warn level but do NOT flip the response to failure — the
15
+ * install succeeded; restart is best-effort.
16
+ */
17
+ export async function handlePluginUpdate(cmd) {
18
+ const startMs = Date.now();
19
+ const payload = (cmd.payload ?? {});
20
+ const id = typeof payload.id === 'string' ? payload.id.trim() : '';
21
+ const version = typeof payload.version === 'string' ? payload.version.trim() : '';
22
+ logCollector?.push('plugin_update_received', 'info', `Plugin update requested`, {
23
+ commandId: cmd.id,
24
+ id,
25
+ version,
26
+ });
27
+ if (!id || !version) {
28
+ return {
29
+ id: cmd.id,
30
+ type: cmd.type,
31
+ success: false,
32
+ error: 'plugin_update payload requires non-empty `id` and `version`',
33
+ };
34
+ }
35
+ try {
36
+ const installed = await installPlugin(id, version);
37
+ if (!installed) {
38
+ logCollector?.push('plugin_update_skipped', 'info', `Plugin already at requested version`, {
39
+ commandId: cmd.id,
40
+ id,
41
+ version,
42
+ durationMs: Date.now() - startMs,
43
+ });
44
+ return {
45
+ id: cmd.id,
46
+ type: cmd.type,
47
+ success: true,
48
+ data: { id, version, installed: false, restarted: false },
49
+ };
50
+ }
51
+ logCollector?.push('plugin_update_installed', 'info', `Plugin installed`, {
52
+ commandId: cmd.id,
53
+ id,
54
+ version,
55
+ });
56
+ let restarted = false;
57
+ try {
58
+ await restartGateway();
59
+ restarted = true;
60
+ }
61
+ catch (err) {
62
+ logCollector?.push('plugin_update_restart_failed', 'warn', `Gateway restart failed after plugin install`, {
63
+ commandId: cmd.id,
64
+ id,
65
+ version,
66
+ error: toErrorMessage(err),
67
+ });
68
+ }
69
+ return {
70
+ id: cmd.id,
71
+ type: cmd.type,
72
+ success: true,
73
+ data: {
74
+ id,
75
+ version,
76
+ installed: true,
77
+ restarted,
78
+ durationMs: Date.now() - startMs,
79
+ },
80
+ };
81
+ }
82
+ catch (err) {
83
+ return {
84
+ id: cmd.id,
85
+ type: cmd.type,
86
+ success: false,
87
+ error: toErrorMessage(err),
88
+ };
89
+ }
90
+ }
91
+ //# sourceMappingURL=plugin-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-update.js","sourceRoot":"","sources":["../../src/handlers/plugin-update.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,32 @@
1
1
  import type { AgentCommand, AgentResponse } from '../types.js';
2
+ /**
3
+ * Defer in milliseconds before clearing the lockfile after an AC swap.
4
+ * Rationale: we must let the AgentResponse flow back through
5
+ * `connection.ts` → `api.publishResponse()` BEFORE the supervisor sees
6
+ * the missing lock and kills the process. A short defensive delay (1s)
7
+ * is plenty — the response is already in flight on the next tick. Heart-
8
+ * beat poll every 30s naturally picks up the missing lock.
9
+ *
10
+ * Exported for tests so they can assert exactly when removeLockFile fires.
11
+ */
12
+ export declare const AC_LOCKFILE_REMOVE_DELAY_MS = 1000;
13
+ /**
14
+ * `self_update` WS handler factory. Two paths:
15
+ *
16
+ * 1. Explicit-payload (new):
17
+ * payload = { agentController?: {version}, openclaw?: {version, plugins?} }
18
+ * Delegates to runExplicitSelfUpdate() — openclaw stack first, AC last.
19
+ *
20
+ * 2. Legacy / empty payload:
21
+ * payload = {}
22
+ * Falls back to the channel-based selfUpdate(currentVersion) so old
23
+ * backends keep working unchanged.
24
+ *
25
+ * AC-changed ordering: install runs synchronously; the response object is
26
+ * built and returned to the caller IMMEDIATELY. Only AFTER the caller
27
+ * (`connection.ts`) has published the response does the deferred
28
+ * `removeLockFile()` fire — see `AC_LOCKFILE_REMOVE_DELAY_MS`. This
29
+ * prevents the supervisor from killing us mid-publish, which used to
30
+ * cause the backend to time out on what was actually a successful update.
31
+ */
2
32
  export declare function handleSelfUpdate(version: string): (cmd: AgentCommand) => Promise<AgentResponse>;
@@ -1,17 +1,109 @@
1
- import { selfUpdate } from '../commands/self-update.js';
1
+ import { selfUpdate, runExplicitSelfUpdate, } from '../commands/self-update.js';
2
2
  import { toErrorMessage } from '../utils/response.js';
3
3
  import { logCollector } from '../connection.js';
4
+ import { removeLockFile } from '../lockfile.js';
5
+ /**
6
+ * Defer in milliseconds before clearing the lockfile after an AC swap.
7
+ * Rationale: we must let the AgentResponse flow back through
8
+ * `connection.ts` → `api.publishResponse()` BEFORE the supervisor sees
9
+ * the missing lock and kills the process. A short defensive delay (1s)
10
+ * is plenty — the response is already in flight on the next tick. Heart-
11
+ * beat poll every 30s naturally picks up the missing lock.
12
+ *
13
+ * Exported for tests so they can assert exactly when removeLockFile fires.
14
+ */
15
+ export const AC_LOCKFILE_REMOVE_DELAY_MS = 1_000;
16
+ /**
17
+ * `self_update` WS handler factory. Two paths:
18
+ *
19
+ * 1. Explicit-payload (new):
20
+ * payload = { agentController?: {version}, openclaw?: {version, plugins?} }
21
+ * Delegates to runExplicitSelfUpdate() — openclaw stack first, AC last.
22
+ *
23
+ * 2. Legacy / empty payload:
24
+ * payload = {}
25
+ * Falls back to the channel-based selfUpdate(currentVersion) so old
26
+ * backends keep working unchanged.
27
+ *
28
+ * AC-changed ordering: install runs synchronously; the response object is
29
+ * built and returned to the caller IMMEDIATELY. Only AFTER the caller
30
+ * (`connection.ts`) has published the response does the deferred
31
+ * `removeLockFile()` fire — see `AC_LOCKFILE_REMOVE_DELAY_MS`. This
32
+ * prevents the supervisor from killing us mid-publish, which used to
33
+ * cause the backend to time out on what was actually a successful update.
34
+ */
4
35
  export function handleSelfUpdate(version) {
5
36
  return async (cmd) => {
37
+ const payload = (cmd.payload ?? {});
38
+ const hasExplicitVersions = !!((payload.openclaw && typeof payload.openclaw.version === 'string') ||
39
+ (payload.agentController && typeof payload.agentController.version === 'string'));
40
+ if (!hasExplicitVersions) {
41
+ logCollector?.push('self_update', 'info', `Self-update requested (legacy / channel-based, current: ${version})`, { commandId: cmd.id, currentVersion: version });
42
+ try {
43
+ await selfUpdate(version);
44
+ return { id: cmd.id, type: cmd.type, success: true, data: { mode: 'legacy' } };
45
+ }
46
+ catch (err) {
47
+ return {
48
+ id: cmd.id,
49
+ type: cmd.type,
50
+ success: false,
51
+ error: toErrorMessage(err),
52
+ };
53
+ }
54
+ }
55
+ logCollector?.push('self_update', 'info', `Self-update requested (explicit, current: ${version})`, {
56
+ commandId: cmd.id,
57
+ currentVersion: version,
58
+ targetAc: payload.agentController?.version,
59
+ targetOpenclaw: payload.openclaw?.version,
60
+ pluginCount: payload.openclaw?.plugins?.length ?? 0,
61
+ });
6
62
  try {
7
- logCollector?.push('self_update', 'info', `Self-update requested (current: ${version})`, {
8
- currentVersion: version,
9
- });
10
- await selfUpdate(version);
11
- return { id: cmd.id, type: cmd.type, success: true, data: {} };
63
+ const result = await runExplicitSelfUpdate(version, payload);
64
+ const response = {
65
+ id: cmd.id,
66
+ type: cmd.type,
67
+ success: true,
68
+ data: {
69
+ mode: 'explicit',
70
+ runtimeChanged: result.runtimeChanged,
71
+ gatewayRestarted: result.gatewayRestarted,
72
+ acChanged: result.acChanged,
73
+ installed: result.pluginSummary?.installed ?? [],
74
+ skipped: result.pluginSummary?.skipped ?? [],
75
+ failed: result.pluginSummary?.failed ?? [],
76
+ },
77
+ };
78
+ // If the agent-controller binary itself was swapped, the supervisor
79
+ // (systemd/launchd/k8s) needs to see the lock file disappear so it
80
+ // restarts us into the new binary. Schedule that work AFTER this
81
+ // function returns, so `api.publishResponse()` runs first and the
82
+ // backend sees a real `success: true` before the supervisor kills
83
+ // the process.
84
+ if (result.acChanged) {
85
+ logCollector?.push('self_update_lockfile_scheduled', 'info', `Lockfile removal scheduled in ${AC_LOCKFILE_REMOVE_DELAY_MS}ms (after response publish)`, { commandId: cmd.id, delayMs: AC_LOCKFILE_REMOVE_DELAY_MS });
86
+ setTimeout(() => {
87
+ try {
88
+ removeLockFile();
89
+ }
90
+ catch (err) {
91
+ // Best-effort: lockfile removal must never throw past the
92
+ // event loop. Log and let heartbeat handle restart on next
93
+ // tick.
94
+ logCollector?.push('self_update_lockfile_remove_failed', 'error', `removeLockFile failed: ${toErrorMessage(err)}`, { commandId: cmd.id, error: toErrorMessage(err) });
95
+ }
96
+ }, AC_LOCKFILE_REMOVE_DELAY_MS);
97
+ }
98
+ return response;
12
99
  }
13
100
  catch (err) {
14
- return { id: cmd.id, type: cmd.type, success: false, error: toErrorMessage(err) };
101
+ return {
102
+ id: cmd.id,
103
+ type: cmd.type,
104
+ success: false,
105
+ error: toErrorMessage(err),
106
+ };
15
107
  }
16
108
  };
17
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/handlers/self-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,KAAK,EAAE,GAAiB,EAA0B,EAAE;QACzD,IAAI,CAAC;YACH,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,mCAAmC,OAAO,GAAG,EAAE;gBACvF,cAAc,EAAE,OAAO;aACxB,CAAC,CAAC;YACH,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/handlers/self-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type AutoPairOutcome = {
2
+ status: 'approved';
3
+ requestId: string;
4
+ deviceId: string;
5
+ } | {
6
+ status: 'skipped';
7
+ reason: 'cli_missing' | 'no_pending' | 'no_match' | 'list_failed' | 'approve_failed' | 'identity_error';
8
+ detail?: string;
9
+ };
10
+ /**
11
+ * Best-effort one-shot auto-approval of our own pending pairing request via
12
+ * the local `openclaw` CLI. Never throws — all failures resolve to a
13
+ * `{ status: 'skipped', reason }` outcome so the caller can treat it as a
14
+ * no-op and continue its retry loop.
15
+ */
16
+ export declare function autoApproveOwnPairing(): Promise<AutoPairOutcome>;
@@ -0,0 +1,84 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ import { logCollector } from '../../connection.js';
4
+ import { toErrorMessage } from '../../utils/response.js';
5
+ import { loadOrCreateDeviceIdentity } from './device-identity.js';
6
+ const execFileAsync = promisify(execFile);
7
+ const CLI_TIMEOUT_MS = 10_000;
8
+ function isErrnoException(e) {
9
+ return e instanceof Error && typeof e.code === 'string';
10
+ }
11
+ /**
12
+ * Best-effort one-shot auto-approval of our own pending pairing request via
13
+ * the local `openclaw` CLI. Never throws — all failures resolve to a
14
+ * `{ status: 'skipped', reason }` outcome so the caller can treat it as a
15
+ * no-op and continue its retry loop.
16
+ */
17
+ export async function autoApproveOwnPairing() {
18
+ let ownDeviceId;
19
+ try {
20
+ ownDeviceId = loadOrCreateDeviceIdentity().deviceId;
21
+ }
22
+ catch (err) {
23
+ const detail = toErrorMessage(err);
24
+ logCollector?.push('chat_provider_auto_pair', 'warn', `Failed to load device identity: ${detail}`, {});
25
+ return { status: 'skipped', reason: 'identity_error', detail };
26
+ }
27
+ logCollector?.push('chat_provider_auto_pair', 'info', 'Pairing required — attempting auto-approve', { deviceId: ownDeviceId });
28
+ // 1. List pending pairing requests.
29
+ let listStdout;
30
+ try {
31
+ const { stdout } = await execFileAsync('openclaw', ['devices', 'list', '--json'], {
32
+ timeout: CLI_TIMEOUT_MS,
33
+ });
34
+ listStdout = stdout;
35
+ }
36
+ catch (err) {
37
+ if (isErrnoException(err) && err.code === 'ENOENT') {
38
+ logCollector?.push('chat_provider_auto_pair', 'warn', 'openclaw CLI not found in PATH — skipping auto-pair', { deviceId: ownDeviceId });
39
+ return { status: 'skipped', reason: 'cli_missing' };
40
+ }
41
+ const detail = toErrorMessage(err);
42
+ logCollector?.push('chat_provider_auto_pair', 'warn', `openclaw devices list failed: ${detail}`, { deviceId: ownDeviceId });
43
+ return { status: 'skipped', reason: 'list_failed', detail };
44
+ }
45
+ // 2. Parse the JSON payload.
46
+ let parsed;
47
+ try {
48
+ parsed = JSON.parse(listStdout);
49
+ }
50
+ catch (err) {
51
+ const detail = toErrorMessage(err);
52
+ logCollector?.push('chat_provider_auto_pair', 'warn', `openclaw devices list failed: ${detail}`, { deviceId: ownDeviceId, parseError: true });
53
+ return { status: 'skipped', reason: 'list_failed', detail };
54
+ }
55
+ const pending = Array.isArray(parsed?.pending) ? parsed.pending : [];
56
+ if (pending.length === 0) {
57
+ logCollector?.push('chat_provider_auto_pair', 'info', 'No pending pairing requests on gateway', { deviceId: ownDeviceId });
58
+ return { status: 'skipped', reason: 'no_pending' };
59
+ }
60
+ // 3. Match our own deviceId.
61
+ const match = pending.find((p) => p?.deviceId === ownDeviceId);
62
+ if (!match) {
63
+ logCollector?.push('chat_provider_auto_pair', 'warn', 'No pending request matches our deviceId', { ownDeviceId, pendingCount: pending.length });
64
+ return { status: 'skipped', reason: 'no_match' };
65
+ }
66
+ // 4. Approve.
67
+ const { requestId } = match;
68
+ try {
69
+ await execFileAsync('openclaw', ['devices', 'approve', requestId, '--json'], {
70
+ timeout: CLI_TIMEOUT_MS,
71
+ });
72
+ }
73
+ catch (err) {
74
+ const detail = toErrorMessage(err);
75
+ logCollector?.push('chat_provider_auto_pair', 'warn', `openclaw devices approve failed: ${detail}`, { requestId, deviceId: ownDeviceId });
76
+ return { status: 'skipped', reason: 'approve_failed', detail };
77
+ }
78
+ logCollector?.push('chat_provider_auto_pair', 'info', 'Approved own pending pairing request', {
79
+ requestId,
80
+ deviceId: ownDeviceId,
81
+ });
82
+ return { status: 'approved', requestId, deviceId: ownDeviceId };
83
+ }
84
+ //# sourceMappingURL=auto-pair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-pair.js","sourceRoot":"","sources":["../../../src/providers/openclaw/auto-pair.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import net from 'node:net';
2
2
  import { OpenclawGatewayAdapter } from './gateway-adapter.js';
3
+ import { autoApproveOwnPairing } from './auto-pair.js';
3
4
  export { OpenclawGatewayAdapter } from './gateway-adapter.js';
4
5
  function tcpPing(host, port, timeoutMs) {
5
6
  return new Promise((resolve) => {
@@ -41,6 +42,7 @@ export class OpenclawProvider {
41
42
  this._connecting = (async () => {
42
43
  const maxRetries = 5;
43
44
  const baseDelayMs = 2000;
45
+ let attemptedAutoPair = false;
44
46
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
45
47
  try {
46
48
  // Always create fresh adapter — old one may have stale state after gateway restart
@@ -55,6 +57,14 @@ export class OpenclawProvider {
55
57
  console.warn(`Chat provider connect failed (attempt ${attempt}/${maxRetries}): ${msg}`);
56
58
  this.adapter?.disconnect();
57
59
  this.adapter = null;
60
+ if (!attemptedAutoPair && msg.includes('pairing required')) {
61
+ attemptedAutoPair = true;
62
+ const outcome = await autoApproveOwnPairing();
63
+ if (outcome.status === 'approved') {
64
+ // Skip back-off — retry immediately on the next iteration
65
+ continue;
66
+ }
67
+ }
58
68
  if (attempt < maxRetries) {
59
69
  await new Promise((r) => setTimeout(r, baseDelayMs * Math.min(attempt, 5)));
60
70
  }
@@ -122,13 +132,15 @@ export class OpenclawProvider {
122
132
  }
123
133
  async restart() {
124
134
  const { exec } = await import('node:child_process');
125
- return new Promise((resolve) => {
135
+ return new Promise((resolve, reject) => {
126
136
  exec('openclaw gateway restart', { timeout: 30_000 }, (error) => {
127
- if (error)
137
+ if (error) {
128
138
  console.error('Gateway restart failed:', error.message);
129
- else
130
- console.log('Gateway restarted');
131
- resolve(); // always resolve — caller decides how to handle
139
+ reject(error);
140
+ return;
141
+ }
142
+ console.log('Gateway restarted');
143
+ resolve();
132
144
  });
133
145
  });
134
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * board:<workspaceId> — board events (card:entered, card:moved, etc.)
6
6
  * heartbeat:<agentId> — heartbeat publications from agent
7
7
  */
8
- export type CommandType = 'diagnostics' | 'restart' | 'deploy' | 'pair' | 'stop' | 'backup' | 'chat_list_sessions' | 'chat_history' | 'chat_send' | 'package_install' | 'file_write' | 'file_delete' | 'onboarding_complete' | 'knowledge_sync' | 'self_update' | 'telegram_webhook' | 'update_skills' | 'update_config' | 'memory_create_entities' | 'memory_create_relations' | 'memory_add_observations' | 'memory_delete_entities' | 'memory_delete_observations' | 'memory_delete_relations' | 'memory_read_graph' | 'memory_search_nodes' | 'memory_open_nodes';
8
+ export type CommandType = 'diagnostics' | 'restart' | 'deploy' | 'pair' | 'stop' | 'backup' | 'chat_list_sessions' | 'chat_history' | 'chat_send' | 'package_install' | 'file_write' | 'file_delete' | 'onboarding_complete' | 'knowledge_sync' | 'self_update' | 'plugin_update' | 'agent_update' | 'telegram_webhook' | 'update_skills' | 'update_config' | 'memory_create_entities' | 'memory_create_relations' | 'memory_add_observations' | 'memory_delete_entities' | 'memory_delete_observations' | 'memory_delete_relations' | 'memory_read_graph' | 'memory_search_nodes' | 'memory_open_nodes';
9
9
  export interface AgentCommand {
10
10
  id: string;
11
11
  type: CommandType;
@@ -1,11 +1,11 @@
1
- import { execGatewayRestart } from './gateway-restart.js';
1
+ import { restartGateway } from './gateway-restart.js';
2
2
  /**
3
3
  * Shared handler logic for commands that restart the OpenClaw gateway.
4
4
  * Used by handleRestart and handleOnboardingComplete.
5
5
  */
6
6
  export async function handleGatewayRestartCommand(command) {
7
7
  try {
8
- const { stdout, stderr } = await execGatewayRestart();
8
+ const { stdout, stderr } = await restartGateway();
9
9
  return {
10
10
  id: command.id,
11
11
  type: command.type,
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-restart-handler.js","sourceRoot":"","sources":["../../src/utils/gateway-restart-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAqB;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAmD,CAAC;QAC9D,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;YACxD,KAAK,EAAE,CAAC,CAAC,OAAO;SACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"gateway-restart-handler.js","sourceRoot":"","sources":["../../src/utils/gateway-restart-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAqB;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAmD,CAAC;QAC9D,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;YACxD,KAAK,EAAE,CAAC,CAAC,OAAO;SACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,57 @@
1
+ export declare const AC_PACKAGE = "@openclaw-cloud/agent-controller";
2
+ export declare function fixNpmPermissions(): Promise<void>;
3
+ export declare function withEaccesRetry<T>(fn: () => Promise<T>, label: string): Promise<T>;
4
+ /**
5
+ * Reads `openclaw --version` and returns the first version-like token.
6
+ * Throws when the binary is missing or output cannot be parsed — the caller
7
+ * decides how to translate that into an AgentResponse.
8
+ */
9
+ export declare function getOpenclawVersion(): Promise<string>;
10
+ export interface InstalledPlugin {
11
+ id: string;
12
+ version: string;
13
+ }
14
+ /**
15
+ * Reads the installed plugin list via `openclaw plugins list --json`.
16
+ * Throws on exec failure or malformed JSON, including a stdout snippet so
17
+ * operators can debug from the agent log.
18
+ */
19
+ export declare function listInstalledPlugins(): Promise<InstalledPlugin[]>;
20
+ /**
21
+ * Install a specific openclaw runtime version globally.
22
+ * Skip-fast when `openclaw --version` already matches.
23
+ */
24
+ export declare function installOpenclaw(version: string): Promise<boolean>;
25
+ /**
26
+ * Install a specific plugin version. When `alreadyInstalled` is provided,
27
+ * skip-fast if that array already lists the plugin at the target version.
28
+ * The caller can fetch the list once via {@link listInstalledPlugins} and
29
+ * thread it through a multi-plugin install loop to avoid N×CLI round-trips.
30
+ */
31
+ export declare function installPlugin(id: string, version: string, alreadyInstalled?: InstalledPlugin[]): Promise<boolean>;
32
+ export interface InstallPluginsResult {
33
+ installed: string[];
34
+ skipped: string[];
35
+ failed: Array<{
36
+ id: string;
37
+ error: string;
38
+ }>;
39
+ }
40
+ /**
41
+ * Install several plugins sequentially. One CLI lookup of the installed list
42
+ * is shared across the whole loop; per-plugin failures are recorded but do
43
+ * not abort the rest of the batch (poison-pill protection).
44
+ */
45
+ export declare function installPlugins(plugins: Array<{
46
+ id: string;
47
+ version: string;
48
+ }>): Promise<InstallPluginsResult>;
49
+ /**
50
+ * Install a specific agent-controller version globally. Caller passes the
51
+ * known current version (typically derived from package.json at boot). This
52
+ * lets us avoid a redundant npm install when the WS payload echoes the
53
+ * version we already run.
54
+ *
55
+ * Returns `true` when the install ran, `false` when skipped.
56
+ */
57
+ export declare function installAcSelf(version: string, currentVersion: string): Promise<boolean>;
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Shared module for openclaw-cli operations (version reads, plugin/runtime
3
+ * installs). Used by:
4
+ * - src/commands/self-update.ts (CLI legacy + explicit-payload self-update)
5
+ * - src/handlers/self-update.ts (WS self_update handler)
6
+ * - src/handlers/agent-update.ts (WS agent_update handler)
7
+ * - src/handlers/plugin-update.ts (WS plugin_update handler)
8
+ *
9
+ * NEVER import 'process.env.X' here — use config from '../config.js'.
10
+ */
11
+ import { execAsync } from './exec.js';
12
+ import { config } from '../config.js';
13
+ const OPENCLAW_PACKAGE = 'openclaw';
14
+ export const AC_PACKAGE = '@openclaw-cloud/agent-controller';
15
+ // ---------------------------------------------------------------------------
16
+ // EACCES self-heal — moved here from src/commands/self-update.ts so that
17
+ // every npm install in the system shares the same retry path.
18
+ // ---------------------------------------------------------------------------
19
+ export async function fixNpmPermissions() {
20
+ const home = config.home;
21
+ console.log('Fixing npm permissions (root-owned files from previous installs)...');
22
+ await execAsync(`sudo chown -R $(id -u):$(id -g) "${home}/.npm" "${home}/.npm-global" 2>/dev/null || true`, 30_000);
23
+ }
24
+ export async function withEaccesRetry(fn, label) {
25
+ try {
26
+ return await fn();
27
+ }
28
+ catch (err) {
29
+ if (err instanceof Error && err.message.includes('EACCES')) {
30
+ await fixNpmPermissions();
31
+ try {
32
+ return await fn();
33
+ }
34
+ catch (retryErr) {
35
+ console.error(`${label} failed after permission fix:`, retryErr instanceof Error ? retryErr.message : retryErr);
36
+ throw retryErr;
37
+ }
38
+ }
39
+ console.error(`${label} failed:`, err instanceof Error ? err.message : err);
40
+ throw err;
41
+ }
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // Version reads
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Reads `openclaw --version` and returns the first version-like token.
48
+ * Throws when the binary is missing or output cannot be parsed — the caller
49
+ * decides how to translate that into an AgentResponse.
50
+ */
51
+ export async function getOpenclawVersion() {
52
+ let stdout;
53
+ try {
54
+ stdout = await execAsync('openclaw --version', 10_000);
55
+ }
56
+ catch (err) {
57
+ const msg = err instanceof Error ? err.message : String(err);
58
+ throw new Error(`openclaw --version failed: ${msg}`);
59
+ }
60
+ // Match a SemVer-like token; tolerate prefixes like "openclaw v1.2.3"
61
+ const match = stdout.match(/\d+\.\d+\.\d+(?:[-+][\w.]+)?/);
62
+ if (!match) {
63
+ throw new Error(`openclaw --version returned unparseable output: ${stdout.slice(0, 200)}`);
64
+ }
65
+ return match[0];
66
+ }
67
+ /**
68
+ * Reads the installed plugin list via `openclaw plugins list --json`.
69
+ * Throws on exec failure or malformed JSON, including a stdout snippet so
70
+ * operators can debug from the agent log.
71
+ */
72
+ export async function listInstalledPlugins() {
73
+ let stdout;
74
+ try {
75
+ stdout = await execAsync('openclaw plugins list --json', 15_000);
76
+ }
77
+ catch (err) {
78
+ const msg = err instanceof Error ? err.message : String(err);
79
+ throw new Error(`openclaw plugins list --json failed: ${msg}`);
80
+ }
81
+ let parsed;
82
+ try {
83
+ parsed = JSON.parse(stdout);
84
+ }
85
+ catch (err) {
86
+ const msg = err instanceof Error ? err.message : String(err);
87
+ throw new Error(`openclaw plugins list --json returned invalid JSON (${msg}): ${stdout.slice(0, 200)}`);
88
+ }
89
+ // Accept either a top-level array or { plugins: [...] }
90
+ const list = Array.isArray(parsed)
91
+ ? parsed
92
+ : Array.isArray(parsed.plugins)
93
+ ? parsed.plugins
94
+ : null;
95
+ if (!list) {
96
+ throw new Error(`openclaw plugins list --json: unexpected shape: ${stdout.slice(0, 200)}`);
97
+ }
98
+ const out = [];
99
+ for (const item of list) {
100
+ if (!item || typeof item !== 'object')
101
+ continue;
102
+ const r = item;
103
+ const id = typeof r.id === 'string' ? r.id : typeof r.name === 'string' ? r.name : null;
104
+ const version = typeof r.version === 'string' ? r.version : null;
105
+ if (id && version)
106
+ out.push({ id, version });
107
+ }
108
+ return out;
109
+ }
110
+ // ---------------------------------------------------------------------------
111
+ // Installers — all return `true` if an install actually ran, `false` if the
112
+ // requested version was already present (idempotent skip).
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Install a specific openclaw runtime version globally.
116
+ * Skip-fast when `openclaw --version` already matches.
117
+ */
118
+ export async function installOpenclaw(version) {
119
+ let current = null;
120
+ try {
121
+ current = await getOpenclawVersion();
122
+ }
123
+ catch {
124
+ // openclaw missing → fall through and install
125
+ }
126
+ if (current === version) {
127
+ return false;
128
+ }
129
+ await withEaccesRetry(() => execAsync(`npm install -g ${OPENCLAW_PACKAGE}@${version}`, 120_000), `npm install -g ${OPENCLAW_PACKAGE}@${version}`);
130
+ return true;
131
+ }
132
+ /**
133
+ * Install a specific plugin version. When `alreadyInstalled` is provided,
134
+ * skip-fast if that array already lists the plugin at the target version.
135
+ * The caller can fetch the list once via {@link listInstalledPlugins} and
136
+ * thread it through a multi-plugin install loop to avoid N×CLI round-trips.
137
+ */
138
+ export async function installPlugin(id, version, alreadyInstalled) {
139
+ const match = alreadyInstalled?.find((p) => p.id === id);
140
+ if (match && match.version === version) {
141
+ return false;
142
+ }
143
+ await withEaccesRetry(() => execAsync(`openclaw plugins install ${id}@${version} --force`, 60_000), `openclaw plugins install ${id}@${version}`);
144
+ return true;
145
+ }
146
+ /**
147
+ * Install several plugins sequentially. One CLI lookup of the installed list
148
+ * is shared across the whole loop; per-plugin failures are recorded but do
149
+ * not abort the rest of the batch (poison-pill protection).
150
+ */
151
+ export async function installPlugins(plugins) {
152
+ const result = { installed: [], skipped: [], failed: [] };
153
+ if (plugins.length === 0)
154
+ return result;
155
+ let inventory = [];
156
+ try {
157
+ inventory = await listInstalledPlugins();
158
+ }
159
+ catch (err) {
160
+ // If we cannot read the inventory we still try to install — the CLI's
161
+ // own --force will overwrite. Record the read failure as the first
162
+ // diagnostic context but don't abort.
163
+ console.warn('listInstalledPlugins failed; proceeding without skip-cache:', err instanceof Error ? err.message : err);
164
+ }
165
+ for (const p of plugins) {
166
+ if (!p || typeof p.id !== 'string' || typeof p.version !== 'string' || !p.id || !p.version) {
167
+ result.failed.push({ id: String(p?.id ?? 'unknown'), error: 'invalid plugin entry' });
168
+ continue;
169
+ }
170
+ try {
171
+ const installed = await installPlugin(p.id, p.version, inventory);
172
+ if (installed)
173
+ result.installed.push(p.id);
174
+ else
175
+ result.skipped.push(p.id);
176
+ }
177
+ catch (err) {
178
+ const msg = err instanceof Error ? err.message : String(err);
179
+ result.failed.push({ id: p.id, error: msg });
180
+ }
181
+ }
182
+ return result;
183
+ }
184
+ /**
185
+ * Install a specific agent-controller version globally. Caller passes the
186
+ * known current version (typically derived from package.json at boot). This
187
+ * lets us avoid a redundant npm install when the WS payload echoes the
188
+ * version we already run.
189
+ *
190
+ * Returns `true` when the install ran, `false` when skipped.
191
+ */
192
+ export async function installAcSelf(version, currentVersion) {
193
+ if (currentVersion === version)
194
+ return false;
195
+ await withEaccesRetry(() => execAsync(`npm install -g ${AC_PACKAGE}@${version}`, 120_000), `npm install -g ${AC_PACKAGE}@${version}`);
196
+ return true;
197
+ }
198
+ //# sourceMappingURL=openclaw-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-ops.js","sourceRoot":"","sources":["../../src/utils/openclaw-ops.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw-cloud/agent-controller",
3
- "version": "2.3.2",
3
+ "version": "2.4.0-beta.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {