@openclaw-cloud/agent-controller 3.0.0-beta.2 → 3.0.0-beta.21
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/bin/agent-controller.js +5 -9
- package/dist/api.d.ts +16 -0
- package/dist/api.js.map +1 -1
- package/dist/commands/agent-update-cli.js +23 -38
- package/dist/commands/agent-update-cli.js.map +1 -1
- package/dist/commands/backup-cli.js +6 -4
- package/dist/commands/backup-cli.js.map +1 -1
- package/dist/commands/bootstrap.d.ts +10 -1
- package/dist/commands/bootstrap.js +33 -73
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.js +4 -3
- package/dist/commands/channel-server.js.map +1 -1
- package/dist/commands/heartbeat-cli.js +2 -6
- package/dist/commands/heartbeat-cli.js.map +1 -1
- package/dist/commands/install-deps.d.ts +10 -0
- package/dist/commands/install-deps.js +33 -43
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/knowledge-sync-cli.js +6 -4
- package/dist/commands/knowledge-sync-cli.js.map +1 -1
- package/dist/commands/plugin-update-cli.js +4 -8
- package/dist/commands/plugin-update-cli.js.map +1 -1
- package/dist/commands/self-update.d.ts +1 -0
- package/dist/commands/self-update.js +76 -37
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/update-skills.js +7 -6
- package/dist/commands/update-skills.js.map +1 -1
- package/dist/config-file.d.ts +24 -0
- package/dist/config-file.js +59 -20
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +4 -0
- package/dist/connection.js +50 -5
- package/dist/connection.js.map +1 -1
- package/dist/handlers/agent-update.d.ts +4 -0
- package/dist/handlers/agent-update.js +16 -44
- package/dist/handlers/agent-update.js.map +1 -1
- package/dist/handlers/deploy.d.ts +1 -2
- package/dist/handlers/deploy.js +4 -20
- package/dist/handlers/deploy.js.map +1 -1
- package/dist/handlers/diagnostics.js +0 -12
- package/dist/handlers/diagnostics.js.map +1 -1
- package/dist/handlers/file-delete.js +4 -5
- package/dist/handlers/file-delete.js.map +1 -1
- package/dist/handlers/file-write.js +4 -4
- package/dist/handlers/file-write.js.map +1 -1
- package/dist/handlers/knowledge-sync.js +2 -14
- package/dist/handlers/knowledge-sync.js.map +1 -1
- package/dist/handlers/memory.d.ts +11 -1
- package/dist/handlers/memory.js.map +1 -1
- package/dist/handlers/onboarding.d.ts +1 -2
- package/dist/handlers/onboarding.js +3 -20
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/package-install.js +1 -1
- package/dist/handlers/package-install.js.map +1 -1
- package/dist/handlers/pair.js +0 -12
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/restart.d.ts +1 -2
- package/dist/handlers/restart.js +3 -8
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/slack-event.d.ts +13 -0
- package/dist/handlers/slack-event.js +40 -0
- package/dist/handlers/slack-event.js.map +1 -0
- package/dist/handlers/stop.js +0 -7
- package/dist/handlers/stop.js.map +1 -1
- package/dist/handlers/telegram-webhook.js +3 -22
- package/dist/handlers/telegram-webhook.js.map +1 -1
- package/dist/handlers/update-config.js +4 -13
- package/dist/handlers/update-config.js.map +1 -1
- package/dist/heartbeat.d.ts +7 -1
- package/dist/heartbeat.js +35 -6
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.js +96 -119
- package/dist/index.js.map +1 -1
- package/dist/lockfile.js +2 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/mock-board-worker.d.ts +31 -0
- package/dist/mock-board-worker.js +125 -0
- package/dist/mock-board-worker.js.map +1 -0
- package/dist/platform/linux.js +6 -5
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +3 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/platform/windows.js +3 -2
- package/dist/platform/windows.js.map +1 -1
- package/dist/providers/claude-code/channel-server.js +2 -1
- package/dist/providers/claude-code/channel-server.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.d.ts +3 -2
- package/dist/providers/claude-code/settings-writer.js +6 -15
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.js +25 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openclaw/gateway-adapter.js +2 -0
- package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
- package/dist/providers/openclaw/gateway-client.js +6 -1
- package/dist/providers/openclaw/gateway-client.js.map +1 -1
- package/dist/providers/openclaw/index.js +34 -13
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/slack-relay-server.d.ts +48 -0
- package/dist/slack-relay-server.js +197 -0
- package/dist/slack-relay-server.js.map +1 -0
- package/dist/types.d.ts +16 -1
- package/dist/utils/anthropic-auth.d.ts +14 -0
- package/dist/utils/anthropic-auth.js +24 -0
- package/dist/utils/anthropic-auth.js.map +1 -1
- package/dist/utils/apply-config.d.ts +65 -12
- package/dist/utils/apply-config.js +308 -100
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.d.ts +6 -0
- package/dist/utils/claude-env.js +29 -28
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +15 -1
- package/dist/utils/config-merge-paths.js +17 -3
- package/dist/utils/config-merge-paths.js.map +1 -1
- package/dist/utils/deploy-type.d.ts +16 -0
- package/dist/utils/deploy-type.js +34 -0
- package/dist/utils/deploy-type.js.map +1 -0
- package/dist/utils/env.d.ts +0 -1
- package/dist/utils/env.js +0 -8
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/exec.d.ts +11 -0
- package/dist/utils/exec.js +47 -1
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gateway-restart-handler.d.ts +6 -2
- package/dist/utils/gateway-restart-handler.js +11 -2
- package/dist/utils/gateway-restart-handler.js.map +1 -1
- package/dist/utils/gateway-restart.d.ts +7 -0
- package/dist/utils/gateway-restart.js +12 -4
- package/dist/utils/gateway-restart.js.map +1 -1
- package/dist/utils/knowledge-graph.d.ts +13 -1
- package/dist/utils/knowledge-graph.js +75 -29
- package/dist/utils/knowledge-graph.js.map +1 -1
- package/dist/utils/legacy-mcp-servers.d.ts +12 -0
- package/dist/utils/legacy-mcp-servers.js +37 -0
- package/dist/utils/legacy-mcp-servers.js.map +1 -0
- package/dist/utils/log-collector.js +2 -1
- package/dist/utils/log-collector.js.map +1 -1
- package/dist/utils/openclaw-ops.d.ts +45 -3
- package/dist/utils/openclaw-ops.js +94 -15
- package/dist/utils/openclaw-ops.js.map +1 -1
- package/dist/utils/openclaw-stack-update.d.ts +31 -0
- package/dist/utils/openclaw-stack-update.js +50 -0
- package/dist/utils/openclaw-stack-update.js.map +1 -0
- package/dist/utils/package-install.js +4 -12
- package/dist/utils/package-install.js.map +1 -1
- package/dist/utils/package-version.d.ts +10 -0
- package/dist/utils/package-version.js +18 -0
- package/dist/utils/package-version.js.map +1 -0
- package/dist/utils/parse-id-at-version.d.ts +15 -0
- package/dist/utils/parse-id-at-version.js +22 -0
- package/dist/utils/parse-id-at-version.js.map +1 -0
- package/dist/utils/plugin-reconcile.d.ts +46 -0
- package/dist/utils/plugin-reconcile.js +201 -0
- package/dist/utils/plugin-reconcile.js.map +1 -0
- package/dist/utils/response.js +1 -0
- package/dist/utils/response.js.map +1 -1
- package/dist/utils/write-home-files.d.ts +27 -0
- package/dist/utils/write-home-files.js +72 -0
- package/dist/utils/write-home-files.js.map +1 -0
- package/dist/utils/write-workspace-files.d.ts +1 -1
- package/dist/utils/write-workspace-files.js +19 -7
- package/dist/utils/write-workspace-files.js.map +1 -1
- package/dist/workspace.d.ts +11 -0
- package/dist/workspace.js +20 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +9 -4
|
@@ -3,17 +3,39 @@ import path from 'node:path';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import { writeClaudeEnv } from './claude-env.js';
|
|
5
5
|
import { writeWorkspaceFiles } from './write-workspace-files.js';
|
|
6
|
+
import { writeHomeFiles } from './write-home-files.js';
|
|
6
7
|
import { restartGateway } from './gateway-restart.js';
|
|
7
|
-
import {
|
|
8
|
+
import { logCollector } from '../connection.js';
|
|
9
|
+
import { VM_ENV_PATH, readEnvFile, writeEnvFile } from '../config-file.js';
|
|
8
10
|
import { config } from '../config.js';
|
|
9
11
|
import { getWorkspaceDir } from '../workspace.js';
|
|
10
|
-
import { MERGEABLE_CONFIG_PATHS, MERGEABLE_SETTINGS_PATHS } from './config-merge-paths.js';
|
|
12
|
+
import { MCP_SERVERS_PATH, MERGEABLE_CONFIG_PATHS, MERGEABLE_SETTINGS_PATHS, } from './config-merge-paths.js';
|
|
13
|
+
import { getResolvedDeployType, isManagedDeploy, setResolvedDeployType } from './deploy-type.js';
|
|
14
|
+
import { migrateLegacyMcpServers } from './legacy-mcp-servers.js';
|
|
15
|
+
import { toErrorMessage } from './response.js';
|
|
11
16
|
function getOpenclawDir() {
|
|
12
17
|
return config.stateDir;
|
|
13
18
|
}
|
|
14
19
|
function getAuthProfilesPath() {
|
|
15
20
|
return path.join(getOpenclawDir(), 'agents', 'main', 'agent', 'auth-profiles.json');
|
|
16
21
|
}
|
|
22
|
+
/** Canonical openclaw.json location — `<stateDir>/openclaw.json`. */
|
|
23
|
+
export function getOpenclawJsonPath() {
|
|
24
|
+
return path.join(getOpenclawDir(), 'openclaw.json');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The ONE writer for openclaw.json — atomic (tmp + rename) and mode 0600.
|
|
28
|
+
*
|
|
29
|
+
* Both properties are load-bearing and used to be split across three
|
|
30
|
+
* independent write sites: the full apply wrote 0600 but non-atomically (a
|
|
31
|
+
* reader could see a truncated file), the scoped merge wrote atomically but
|
|
32
|
+
* with no mode (tmp + rename RESETS a pre-existing 0600 file to 0644, leaking
|
|
33
|
+
* `models.providers[*].apiKey`), and the startup memory-MCP injection did
|
|
34
|
+
* neither. Everything goes through here now.
|
|
35
|
+
*/
|
|
36
|
+
export async function writeOpenclawJson(data) {
|
|
37
|
+
await writeJsonAtomic(getOpenclawJsonPath(), data, 0o600);
|
|
38
|
+
}
|
|
17
39
|
/**
|
|
18
40
|
* Generate auth-profiles.json from openclaw.json auth config + envVars.
|
|
19
41
|
* openclaw.json contains profile declarations (provider, mode) without secrets.
|
|
@@ -76,26 +98,56 @@ async function fileExists(p) {
|
|
|
76
98
|
}
|
|
77
99
|
}
|
|
78
100
|
/**
|
|
79
|
-
*
|
|
101
|
+
* Write `skills` through the same hardened writer as workspace files. Skills
|
|
102
|
+
* used to have their own copy of this logic in commands/bootstrap.ts that had
|
|
103
|
+
* no path-containment check, so a backend-supplied key like
|
|
104
|
+
* '../../.claude/settings.json' escaped the workspace.
|
|
105
|
+
*/
|
|
106
|
+
async function writeSkills(data, logPrefix) {
|
|
107
|
+
if (!data.skills || Object.keys(data.skills).length === 0)
|
|
108
|
+
return;
|
|
109
|
+
const wrote = await writeWorkspaceFiles(data.skills, getWorkspaceDir());
|
|
110
|
+
console.log(`${logPrefix} wrote ${wrote} skill files`);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Vars without which agent-controller cannot boot: `requireConfig` exits the
|
|
114
|
+
* process when any is missing. The VM provisioner writes them; nothing that
|
|
115
|
+
* arrives later over the wire may remove them from the VM `.env`.
|
|
116
|
+
*/
|
|
117
|
+
const BOOT_CRITICAL_ENV_KEYS = [
|
|
118
|
+
'AGENT_ID',
|
|
119
|
+
'AGENT_TOKEN',
|
|
120
|
+
'CENTRIFUGO_URL',
|
|
121
|
+
'BACKEND_URL',
|
|
122
|
+
];
|
|
123
|
+
/**
|
|
124
|
+
* FULL apply — only ever legal on a managed install (see `isManagedDeploy`).
|
|
125
|
+
* Rewrites files wholesale:
|
|
80
126
|
* 1. Write openclaw.json
|
|
81
|
-
* 2. Write
|
|
82
|
-
* 3. Write .
|
|
83
|
-
* 4.
|
|
127
|
+
* 2. Write workspace files + skills
|
|
128
|
+
* 3. Write auth-profiles.json + settings.json (from envVars)
|
|
129
|
+
* 4. MERGE .env (for VM agents) — never a wholesale replace, see step 4 below
|
|
130
|
+
* 5. Restart gateway
|
|
84
131
|
*/
|
|
85
132
|
export async function applyBootstrapConfig(data) {
|
|
86
|
-
const openclawDir = getOpenclawDir();
|
|
87
133
|
// 1. Write openclaw.json
|
|
88
134
|
if (data.openclawConfig) {
|
|
89
|
-
|
|
90
|
-
await fs.mkdir(openclawDir, { recursive: true });
|
|
91
|
-
await fs.writeFile(configPath, JSON.stringify(data.openclawConfig, null, 2) + '\n');
|
|
135
|
+
await writeOpenclawJson(data.openclawConfig);
|
|
92
136
|
console.log('[apply-config] openclaw.json updated');
|
|
93
137
|
}
|
|
94
138
|
// 1a. Write workspace files (shared files pushed by backend on update_config)
|
|
95
139
|
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
96
140
|
const workspaceDir = getWorkspaceDir();
|
|
97
|
-
await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
98
|
-
console.log(`[apply-config] wrote ${
|
|
141
|
+
const wrote = await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
142
|
+
console.log(`[apply-config] wrote ${wrote} workspace files`);
|
|
143
|
+
}
|
|
144
|
+
// 1b. Write skills (same sandbox as workspace files — they share the dir)
|
|
145
|
+
await writeSkills(data, '[apply-config]');
|
|
146
|
+
// 1c. Write home files — platform-managed credentials placed outside the
|
|
147
|
+
// workspace (~/.secrets/SECRETS.txt) so knowledge sync never indexes them.
|
|
148
|
+
const wroteHomeFiles = await writeHomeFiles(data.homeFiles);
|
|
149
|
+
if (wroteHomeFiles > 0) {
|
|
150
|
+
console.log(`[apply-config] wrote ${wroteHomeFiles} home files`);
|
|
99
151
|
}
|
|
100
152
|
// 2. Write auth-profiles.json from openclawConfig.auth.profiles + envVars (API keys)
|
|
101
153
|
if (data.openclawConfig && data.envVars) {
|
|
@@ -112,23 +164,69 @@ export async function applyBootstrapConfig(data) {
|
|
|
112
164
|
}
|
|
113
165
|
await writeClaudeEnv(cleanEnvVars);
|
|
114
166
|
console.log('[apply-config] settings.json updated');
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
167
|
+
// 4. Update .env for VM agents — a MERGE onto the existing file, never a
|
|
168
|
+
// replace.
|
|
169
|
+
//
|
|
170
|
+
// This used to write `{ ...cleanEnvVars, AGENT_DEPLOY_TYPE }`, i.e. the
|
|
171
|
+
// payload's envVars wholesale. But the payload only carries proxy
|
|
172
|
+
// credentials (ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL …), so every
|
|
173
|
+
// boot-critical var the VM provisioner wrote — AGENT_ID, AGENT_TOKEN,
|
|
174
|
+
// CENTRIFUGO_URL, BACKEND_URL, OPENCLAW_GATEWAY_TOKEN, USER_ID,
|
|
175
|
+
// WORKSPACE_ID — was deleted on the first successful update_config. The
|
|
176
|
+
// next service restart then booted a controller with no identity,
|
|
177
|
+
// `requireConfig` exited, and the agent was simply dead.
|
|
178
|
+
//
|
|
179
|
+
// It shipped that way for months, masked by an EACCES on this file (the
|
|
180
|
+
// provisioner left the dir root-owned, so the write always failed). Fixing
|
|
181
|
+
// those permissions on 2026-08-08 unmasked it: the first update_config
|
|
182
|
+
// afterwards clobbered .env on all 5 running VMs and killed agent
|
|
183
|
+
// 87b96f43 overnight (incident 2026-08-09).
|
|
184
|
+
const deployType = getResolvedDeployType();
|
|
185
|
+
if (deployType === 'vm' || (await fileExists(VM_ENV_PATH))) {
|
|
186
|
+
const existingVars = await readEnvFile(VM_ENV_PATH);
|
|
187
|
+
const envOut = { ...existingVars, ...cleanEnvVars };
|
|
188
|
+
// An empty payload value means "remove this key" — the same signal
|
|
189
|
+
// `cleanEnvVars` strips out for settings.json, applied here to the file
|
|
190
|
+
// the key actually lives in. Without this there would be no way to
|
|
191
|
+
// retire a rotated credential from a VM once merging began.
|
|
192
|
+
for (const [k, v] of Object.entries(data.envVars)) {
|
|
193
|
+
if (v === '')
|
|
194
|
+
delete envOut[k];
|
|
195
|
+
}
|
|
196
|
+
if (deployType)
|
|
197
|
+
envOut.AGENT_DEPLOY_TYPE = deployType;
|
|
198
|
+
// Belt and braces: whatever the backend sends, a config update must not
|
|
199
|
+
// be able to leave the controller unable to boot. If one of these was in
|
|
200
|
+
// the file and the merge would drop or blank it, keep what was there.
|
|
201
|
+
for (const k of BOOT_CRITICAL_ENV_KEYS) {
|
|
202
|
+
if (existingVars[k] && !envOut[k]) {
|
|
203
|
+
console.warn(`[apply-config] refusing to remove boot-critical ${k} from .env — keeping existing value`);
|
|
204
|
+
envOut[k] = existingVars[k];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
await writeEnvFile(VM_ENV_PATH, envOut);
|
|
122
208
|
console.log('[apply-config] .env updated');
|
|
123
209
|
}
|
|
124
210
|
}
|
|
125
|
-
//
|
|
211
|
+
// 5. Restart gateway
|
|
212
|
+
//
|
|
213
|
+
// Stays best-effort by design — the apply must not depend on it (see CLAUDE.md).
|
|
214
|
+
// But a failure here is not cosmetic either: writing the config stops the
|
|
215
|
+
// channels for a plugin reload, and this restart is what brings them back. On
|
|
216
|
+
// 2026-08-26 the restart failed on two VM agents and only `console.error` knew;
|
|
217
|
+
// `update_config` reported success and they sat deaf to Slack for ~50 minutes.
|
|
218
|
+
// So it now also emits a domain event, which lands in `agent_log` and is
|
|
219
|
+
// queryable by agentId.
|
|
126
220
|
try {
|
|
127
221
|
await restartGateway();
|
|
128
222
|
console.log('[apply-config] gateway restarted');
|
|
129
223
|
}
|
|
130
224
|
catch (err) {
|
|
131
|
-
|
|
225
|
+
const message = toErrorMessage(err);
|
|
226
|
+
console.error('[apply-config] gateway restart failed:', message);
|
|
227
|
+
logCollector?.push('gateway_restart_failed', 'error', 'Gateway restart failed after config apply', {
|
|
228
|
+
error: message,
|
|
229
|
+
});
|
|
132
230
|
}
|
|
133
231
|
}
|
|
134
232
|
function isPlainObject(v) {
|
|
@@ -175,14 +273,46 @@ function getPath(obj, dotPath) {
|
|
|
175
273
|
/** Set dot-path on object, creating intermediate objects as needed. */
|
|
176
274
|
function setPath(obj, dotPath, value) {
|
|
177
275
|
const parts = dotPath.split('.');
|
|
276
|
+
const leaf = parts[parts.length - 1];
|
|
277
|
+
if (leaf === undefined)
|
|
278
|
+
return;
|
|
178
279
|
let cur = obj;
|
|
179
280
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
180
281
|
const key = parts[i];
|
|
282
|
+
if (key === undefined)
|
|
283
|
+
continue;
|
|
181
284
|
if (!isPlainObject(cur[key]))
|
|
182
285
|
cur[key] = {};
|
|
183
286
|
cur = cur[key];
|
|
184
287
|
}
|
|
185
|
-
cur[
|
|
288
|
+
cur[leaf] = value;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Keys whose values must never reach a log line. Matched case-insensitively
|
|
292
|
+
* against the key NAME, so it also catches nested holders like
|
|
293
|
+
* `headers.Authorization` and `env.ANTHROPIC_API_KEY`.
|
|
294
|
+
*/
|
|
295
|
+
const SECRET_KEY_RE = /token|secret|key|auth|password|credential/i;
|
|
296
|
+
function maskSecretValue(v) {
|
|
297
|
+
if (typeof v !== 'string')
|
|
298
|
+
return '***';
|
|
299
|
+
return v.length <= 4 ? '***' : `***${v.slice(-4)}`;
|
|
300
|
+
}
|
|
301
|
+
/** Deep copy of a config value with secret-ish leaves masked, for logging only. */
|
|
302
|
+
function maskSecrets(value) {
|
|
303
|
+
if (Array.isArray(value))
|
|
304
|
+
return value.map(maskSecrets);
|
|
305
|
+
if (!isPlainObject(value))
|
|
306
|
+
return value;
|
|
307
|
+
const out = {};
|
|
308
|
+
for (const [k, v] of Object.entries(value)) {
|
|
309
|
+
out[k] = SECRET_KEY_RE.test(k) ? maskSecretValue(v) : maskSecrets(v);
|
|
310
|
+
}
|
|
311
|
+
return out;
|
|
312
|
+
}
|
|
313
|
+
/** One-line, secret-masked rendering of a config value for a log message. */
|
|
314
|
+
function describeForLog(value) {
|
|
315
|
+
return JSON.stringify(maskSecrets(value));
|
|
186
316
|
}
|
|
187
317
|
/**
|
|
188
318
|
* Merge a single allowlisted path from remote into local.
|
|
@@ -190,11 +320,18 @@ function setPath(obj, dotPath, value) {
|
|
|
190
320
|
* Semantics:
|
|
191
321
|
* - If local missing → copy remote (added).
|
|
192
322
|
* - If both plain objects → key-by-key merge; new keys added, conflicting
|
|
193
|
-
* keys (existing key with different value) logged + skipped (local wins)
|
|
323
|
+
* keys (existing key with different value) logged + skipped (local wins),
|
|
324
|
+
* UNLESS `remoteWins` — then the local entry is overwritten with the remote
|
|
325
|
+
* one and the change is logged (old → new, secrets masked).
|
|
194
326
|
* - Otherwise (scalars / arrays / subtree) → equality check: equal = no-op,
|
|
195
327
|
* differ = conflict (local wins).
|
|
328
|
+
*
|
|
329
|
+
* `remoteWins` is only used for `mcp.servers` in openclaw.json. That section is
|
|
330
|
+
* backend-managed (rotated tokens, changed URLs) and local-wins meant an
|
|
331
|
+
* updated server entry could never reach a standalone agent. Every other
|
|
332
|
+
* mergeable path — and ALL of ~/.claude/settings.json — keeps local-wins.
|
|
196
333
|
*/
|
|
197
|
-
function mergePath(local, remote, dotPath, logPrefix) {
|
|
334
|
+
function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
|
|
198
335
|
const remoteVal = getPath(remote, dotPath);
|
|
199
336
|
if (remoteVal === undefined)
|
|
200
337
|
return { changed: false, outcome: 'equal' };
|
|
@@ -206,28 +343,46 @@ function mergePath(local, remote, dotPath, logPrefix) {
|
|
|
206
343
|
}
|
|
207
344
|
// Both objects → key-level merge
|
|
208
345
|
if (isPlainObject(localVal) && isPlainObject(remoteVal)) {
|
|
209
|
-
|
|
346
|
+
const added = [];
|
|
347
|
+
const overwritten = [];
|
|
210
348
|
const conflicts = [];
|
|
211
349
|
for (const [k, v] of Object.entries(remoteVal)) {
|
|
212
350
|
if (!(k in localVal)) {
|
|
213
351
|
localVal[k] = v;
|
|
214
|
-
|
|
352
|
+
added.push(k);
|
|
215
353
|
console.log(`${logPrefix} ADDED ${dotPath}.${k}`);
|
|
216
354
|
}
|
|
217
355
|
else if (!deepEqual(localVal[k], v)) {
|
|
218
|
-
|
|
219
|
-
|
|
356
|
+
if (remoteWins) {
|
|
357
|
+
console.log(`${logPrefix} OVERWROTE ${dotPath}.${k}: ` +
|
|
358
|
+
`${describeForLog(localVal[k])} → ${describeForLog(v)}`);
|
|
359
|
+
localVal[k] = v;
|
|
360
|
+
overwritten.push(k);
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
conflicts.push(k);
|
|
364
|
+
console.warn(`[config-merge] SKIPPED conflict at ${dotPath}.${k}: keeping local value`);
|
|
365
|
+
}
|
|
220
366
|
}
|
|
221
367
|
}
|
|
222
|
-
|
|
223
|
-
|
|
368
|
+
// Keys present only locally are never removed — the backend payload is not
|
|
369
|
+
// authoritative about deletions. Documented in applyMergeableConfig.
|
|
370
|
+
const changed = added.length > 0 || overwritten.length > 0;
|
|
371
|
+
const detailParts = [];
|
|
372
|
+
if (overwritten.length > 0)
|
|
373
|
+
detailParts.push(`overwritten:${overwritten.join(',')}`);
|
|
374
|
+
if (conflicts.length > 0)
|
|
375
|
+
detailParts.push(`conflicts:${conflicts.join(',')}`);
|
|
376
|
+
const detail = detailParts.length > 0 ? detailParts.join(' ') : undefined;
|
|
377
|
+
if (!changed) {
|
|
378
|
+
return conflicts.length > 0
|
|
379
|
+
? { changed: false, outcome: 'conflict', detail: conflicts.join(',') }
|
|
380
|
+
: { changed: false, outcome: 'equal' };
|
|
224
381
|
}
|
|
225
|
-
if (
|
|
226
|
-
return { changed: true, outcome: '
|
|
382
|
+
if (overwritten.length > 0 && added.length === 0) {
|
|
383
|
+
return { changed: true, outcome: 'overwritten', detail };
|
|
227
384
|
}
|
|
228
|
-
|
|
229
|
-
return { changed: true, outcome: 'merged' };
|
|
230
|
-
return { changed: false, outcome: 'equal' };
|
|
385
|
+
return { changed: true, outcome: 'merged', detail };
|
|
231
386
|
}
|
|
232
387
|
// Leaf or array or mismatched types → equality check
|
|
233
388
|
if (deepEqual(localVal, remoteVal)) {
|
|
@@ -246,11 +401,31 @@ async function readJsonSafe(filePath) {
|
|
|
246
401
|
return null;
|
|
247
402
|
}
|
|
248
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* Write JSON through a tmp file + rename so a reader never sees a half-written
|
|
406
|
+
* config. Without an explicit `mode` the existing file's permissions are
|
|
407
|
+
* carried over: the tmp is a brand-new inode, so a plain rename would silently
|
|
408
|
+
* relax a 0600 file (e.g. a user's ~/.claude/settings.json) to whatever the
|
|
409
|
+
* umask allows.
|
|
410
|
+
*/
|
|
249
411
|
async function writeJsonAtomic(filePath, data, mode) {
|
|
250
412
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
413
|
+
let effectiveMode = mode;
|
|
414
|
+
if (effectiveMode === undefined) {
|
|
415
|
+
try {
|
|
416
|
+
effectiveMode = (await fs.stat(filePath)).mode & 0o777;
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
// No existing file (or a mocked fs) — let the umask decide.
|
|
420
|
+
}
|
|
421
|
+
}
|
|
251
422
|
const tmp = filePath + '.tmp';
|
|
252
|
-
const opts =
|
|
423
|
+
const opts = effectiveMode !== undefined ? { mode: effectiveMode } : undefined;
|
|
253
424
|
await fs.writeFile(tmp, JSON.stringify(data, null, 2) + '\n', opts);
|
|
425
|
+
// `mode` on writeFile only applies when the file is CREATED — a tmp left
|
|
426
|
+
// behind by a crashed run would keep its old, looser mode.
|
|
427
|
+
if (effectiveMode !== undefined)
|
|
428
|
+
await fs.chmod(tmp, effectiveMode);
|
|
254
429
|
await fs.rename(tmp, filePath);
|
|
255
430
|
}
|
|
256
431
|
/**
|
|
@@ -263,11 +438,32 @@ async function writeJsonAtomic(filePath, data, mode) {
|
|
|
263
438
|
* - Missing local value → remote is written.
|
|
264
439
|
* - Equal values → no-op.
|
|
265
440
|
* - Differing values → conflict, local wins, warn+skip logged.
|
|
266
|
-
* - For
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
441
|
+
* - For object paths: conflict detection is per-key inside the dict.
|
|
442
|
+
* - **Exception — `mcp.servers` in openclaw.json is REMOTE-wins per key.**
|
|
443
|
+
* That section is backend-managed: the URL, transport and bearer token of a
|
|
444
|
+
* backend-generated server (e.g. `openclaw-cloud`) change over time, and
|
|
445
|
+
* under local-wins an updated entry could never reach a standalone agent —
|
|
446
|
+
* a rotated token was skipped forever (observed live 2026-08-02). Every
|
|
447
|
+
* server NAME present in the payload is overwritten; names that exist only
|
|
448
|
+
* locally are left untouched.
|
|
449
|
+
* LIMITATION — no deletions. A server removed in the backend stays in the
|
|
450
|
+
* local openclaw.json: the payload cannot distinguish "removed upstream"
|
|
451
|
+
* from "never managed here", and dropping local-only entries would delete
|
|
452
|
+
* the user's own servers. Removal on standalone is a manual edit.
|
|
453
|
+
* - Restarts the gateway **iff** the `mcp.servers` subtree actually changed.
|
|
454
|
+
* This is a FALLBACK, not the primary delivery mechanism: openclaw 2026.7.1
|
|
455
|
+
* does self-reload this section (verified live 2026-08-03 — the gateway
|
|
456
|
+
* logged `[reload] config hot reload applied (mcp.servers.<name>.url,
|
|
457
|
+
* mcp.servers.<name>.headers)` on an overwrite, with no restart). The
|
|
458
|
+
* restart covers builds/paths where that self-reload does not fire, and
|
|
459
|
+
* mirrors what applyBootstrapConfig does on managed installs. It is
|
|
460
|
+
* best-effort: a failure is logged and does not fail the apply — on a
|
|
461
|
+
* launchd box where `openclaw` is not on the service PATH it never runs at
|
|
462
|
+
* all, and the merge still lands.
|
|
463
|
+
* - Settings.json (~/.claude/settings.json) keeps LOCAL-wins for
|
|
464
|
+
* `mcp.servers` ONLY — apiKeyHelper/permissions/env/etc untouched. `env` is
|
|
465
|
+
* never written here: it would redirect the user's own Claude Code sessions
|
|
466
|
+
* to the platform proxy (see MERGEABLE_SETTINGS_PATHS).
|
|
271
467
|
* - auth-profiles.json and .env are NOT touched on standalone.
|
|
272
468
|
*/
|
|
273
469
|
export async function applyMergeableConfig(data) {
|
|
@@ -276,47 +472,40 @@ export async function applyMergeableConfig(data) {
|
|
|
276
472
|
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
277
473
|
console.log('[config-merge] workspaceFiles not applied on standalone — intentional MVP limitation');
|
|
278
474
|
}
|
|
475
|
+
// Same for home files: writing platform credentials into a third-party
|
|
476
|
+
// user's HOME is exactly the class of mistake this branch exists to prevent.
|
|
477
|
+
// `writeHomeFiles` enforces that itself; this line just makes the skip visible.
|
|
478
|
+
if (data.homeFiles && Object.keys(data.homeFiles).length > 0) {
|
|
479
|
+
console.log('[config-merge] homeFiles not applied on standalone — managed installs only');
|
|
480
|
+
}
|
|
481
|
+
// Skills ARE applied: they live under the platform-owned .agents/skills/
|
|
482
|
+
// namespace, and the CLI bootstrap wrote them on standalone all along.
|
|
483
|
+
await writeSkills(data, '[config-merge] skills:');
|
|
279
484
|
// --- openclaw.json ---
|
|
485
|
+
let mcpServersChanged = false;
|
|
280
486
|
if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
|
|
281
|
-
const
|
|
282
|
-
const configPath = path.join(openclawDir, 'openclaw.json');
|
|
487
|
+
const configPath = getOpenclawJsonPath();
|
|
283
488
|
const existing = await readJsonSafe(configPath);
|
|
284
489
|
const local = existing ?? {};
|
|
285
490
|
const isFreshFile = existing === null;
|
|
286
491
|
const remoteConfig = data.openclawConfig;
|
|
492
|
+
// Snapshot the section BEFORE any mutation (the legacy migration below can
|
|
493
|
+
// move entries into it too) so the restart decision reflects what the
|
|
494
|
+
// running gateway would actually see change.
|
|
495
|
+
const mcpServersBefore = structuredClone(getPath(local, MCP_SERVERS_PATH));
|
|
287
496
|
// One-shot migration of the local file: lift any pre-existing flat
|
|
288
497
|
// `mcpServers` into `mcp.servers` so the OpenClaw CLI's strict schema
|
|
289
498
|
// stops rejecting the file.
|
|
290
|
-
let changed =
|
|
291
|
-
if (isPlainObject(local.mcpServers)) {
|
|
292
|
-
const flatEntries = local.mcpServers;
|
|
293
|
-
const existingNested = isPlainObject(local.mcp)
|
|
294
|
-
? local.mcp.servers
|
|
295
|
-
: undefined;
|
|
296
|
-
const nested = isPlainObject(existingNested)
|
|
297
|
-
? existingNested
|
|
298
|
-
: {};
|
|
299
|
-
for (const [k, v] of Object.entries(flatEntries)) {
|
|
300
|
-
if (!(k in nested)) {
|
|
301
|
-
nested[k] = v;
|
|
302
|
-
console.log(`[config-merge] MIGRATED legacy mcpServers.${k} → mcp.servers.${k}`);
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
console.warn(`[config-merge] MIGRATION SKIP: mcp.servers.${k} already exists, dropping legacy flat entry`);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
setPath(local, 'mcp.servers', nested);
|
|
309
|
-
delete local.mcpServers;
|
|
310
|
-
changed = true;
|
|
311
|
-
}
|
|
499
|
+
let changed = migrateLegacyMcpServers(local, '[config-merge]');
|
|
312
500
|
for (const p of MERGEABLE_CONFIG_PATHS) {
|
|
313
|
-
const r = mergePath(local, remoteConfig, p, '[config-merge]');
|
|
501
|
+
const r = mergePath(local, remoteConfig, p, '[config-merge]', p === MCP_SERVERS_PATH);
|
|
314
502
|
result.outcomes.push({ path: p, outcome: r.outcome, detail: r.detail });
|
|
315
503
|
if (r.changed)
|
|
316
504
|
changed = true;
|
|
317
505
|
}
|
|
506
|
+
mcpServersChanged = !deepEqual(mcpServersBefore, getPath(local, MCP_SERVERS_PATH));
|
|
318
507
|
if (changed || (isFreshFile && Object.keys(local).length > 0)) {
|
|
319
|
-
await
|
|
508
|
+
await writeOpenclawJson(local);
|
|
320
509
|
result.changed = true;
|
|
321
510
|
console.log(`[config-merge] openclaw.json ${isFreshFile ? 'created' : 'updated'} at ${configPath}`);
|
|
322
511
|
}
|
|
@@ -328,23 +517,16 @@ export async function applyMergeableConfig(data) {
|
|
|
328
517
|
}
|
|
329
518
|
}
|
|
330
519
|
// --- ~/.claude/settings.json ---
|
|
331
|
-
// Only merge if
|
|
520
|
+
// Only merge if the payload carries MCP servers. `data.envVars` is
|
|
521
|
+
// deliberately NOT projected into `env` here — see MERGEABLE_SETTINGS_PATHS.
|
|
332
522
|
// Canonical shape in Claude Code's settings.json is `mcp.servers` (nested);
|
|
333
523
|
// the backend always sends that shape.
|
|
334
524
|
const settingsLikeRemote = {};
|
|
335
|
-
if (data.envVars && Object.keys(data.envVars).length > 0) {
|
|
336
|
-
const cleanEnv = {};
|
|
337
|
-
for (const [k, v] of Object.entries(data.envVars))
|
|
338
|
-
if (v !== '')
|
|
339
|
-
cleanEnv[k] = v;
|
|
340
|
-
if (Object.keys(cleanEnv).length > 0)
|
|
341
|
-
settingsLikeRemote.env = cleanEnv;
|
|
342
|
-
}
|
|
343
525
|
if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
|
|
344
526
|
const oc = data.openclawConfig;
|
|
345
527
|
const nestedServers = isPlainObject(oc.mcp) ? oc.mcp.servers : undefined;
|
|
346
528
|
if (isPlainObject(nestedServers)) {
|
|
347
|
-
setPath(settingsLikeRemote,
|
|
529
|
+
setPath(settingsLikeRemote, MCP_SERVERS_PATH, nestedServers);
|
|
348
530
|
}
|
|
349
531
|
}
|
|
350
532
|
if (Object.keys(settingsLikeRemote).length > 0) {
|
|
@@ -357,35 +539,19 @@ export async function applyMergeableConfig(data) {
|
|
|
357
539
|
// One-shot migration: if settings.json has the legacy flat `mcpServers`
|
|
358
540
|
// key, lift its entries into `mcp.servers` (local wins on conflict) and
|
|
359
541
|
// remove the flat key. Survives across runs (idempotent).
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
? existingNested
|
|
367
|
-
: {};
|
|
368
|
-
for (const [k, v] of Object.entries(flatEntries)) {
|
|
369
|
-
if (!(k in nested)) {
|
|
370
|
-
nested[k] = v;
|
|
371
|
-
console.log(`[settings-merge] MIGRATED legacy mcpServers.${k} → mcp.servers.${k}`);
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
console.warn(`[settings-merge] MIGRATION SKIP: mcp.servers.${k} already exists, dropping legacy flat entry`);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
setPath(local, 'mcp.servers', nested);
|
|
378
|
-
delete local.mcpServers;
|
|
379
|
-
result.changed = true;
|
|
380
|
-
}
|
|
381
|
-
let changed = false;
|
|
542
|
+
//
|
|
543
|
+
// `changed` is per-FILE on purpose. It used to write into the shared
|
|
544
|
+
// `result.changed`, which made "did settings.json change?" true whenever
|
|
545
|
+
// openclaw.json had changed earlier — settings.json got rewritten even
|
|
546
|
+
// when every one of its own merges was a no-op.
|
|
547
|
+
let changed = migrateLegacyMcpServers(local, '[settings-merge]');
|
|
382
548
|
for (const p of MERGEABLE_SETTINGS_PATHS) {
|
|
383
549
|
const r = mergePath(local, settingsLikeRemote, p, '[settings-merge]');
|
|
384
550
|
result.outcomes.push({ path: `settings:${p}`, outcome: r.outcome, detail: r.detail });
|
|
385
551
|
if (r.changed)
|
|
386
552
|
changed = true;
|
|
387
553
|
}
|
|
388
|
-
if (changed
|
|
554
|
+
if (changed) {
|
|
389
555
|
await writeJsonAtomic(settingsPath, local);
|
|
390
556
|
result.changed = true;
|
|
391
557
|
console.log(`[settings-merge] settings.json updated at ${settingsPath}`);
|
|
@@ -398,6 +564,48 @@ export async function applyMergeableConfig(data) {
|
|
|
398
564
|
console.log('[settings-merge] ~/.claude/settings.json absent — skipping (standalone user owns it)');
|
|
399
565
|
}
|
|
400
566
|
}
|
|
567
|
+
// Fallback delivery for `mcp.servers`. Openclaw 2026.7.1 DOES self-reload
|
|
568
|
+
// this section (verified live 2026-08-03), so on a current runtime this
|
|
569
|
+
// restart is belt-and-braces; it exists for builds where the self-reload does
|
|
570
|
+
// not cover `mcp.servers`, and mirrors applyBootstrapConfig on managed. Fires
|
|
571
|
+
// only when the section actually moved, so a no-op payload never bounces a
|
|
572
|
+
// busy gateway (this gateway also hosts the running agent).
|
|
573
|
+
if (mcpServersChanged) {
|
|
574
|
+
console.log('[config-merge] mcp.servers changed — restarting gateway');
|
|
575
|
+
try {
|
|
576
|
+
await restartGateway();
|
|
577
|
+
console.log('[config-merge] gateway restarted');
|
|
578
|
+
}
|
|
579
|
+
catch (err) {
|
|
580
|
+
// Best-effort: the config on disk is already correct, and failing the
|
|
581
|
+
// whole apply over a restart would lose the merge result.
|
|
582
|
+
console.error('[config-merge] gateway restart failed:', toErrorMessage(err));
|
|
583
|
+
}
|
|
584
|
+
}
|
|
401
585
|
return result;
|
|
402
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* The one owner of "fetch bootstrap and apply it". Every caller — the
|
|
589
|
+
* `update_config` WS handler, the `bootstrap` CLI, the opt-in startup refresh —
|
|
590
|
+
* goes through here so the deploy-type decision cannot drift between them.
|
|
591
|
+
*
|
|
592
|
+
* Managed installs ('vm'/'k8s') are provisioned end to end by the platform and
|
|
593
|
+
* get the full apply. Anything else — 'standalone', 'external', or a payload
|
|
594
|
+
* from an older backend that omits `deploymentType` — is a third-party machine
|
|
595
|
+
* and gets the scoped, additive merge only. Never rewrite files we don't own.
|
|
596
|
+
*/
|
|
597
|
+
export async function fetchAndApplyConfig(api, agentId) {
|
|
598
|
+
const data = await api.agentBootstrap(agentId);
|
|
599
|
+
setResolvedDeployType(data.deploymentType);
|
|
600
|
+
const deployType = getResolvedDeployType() ?? 'unknown';
|
|
601
|
+
if (isManagedDeploy()) {
|
|
602
|
+
console.log(`[apply-config] managed install (deployType=${deployType}) — full apply`);
|
|
603
|
+
await applyBootstrapConfig(data);
|
|
604
|
+
return { managed: true };
|
|
605
|
+
}
|
|
606
|
+
console.log(`[apply-config] third-party install (deployType=${deployType}) — scoped merge only, ` +
|
|
607
|
+
'user-owned files left alone');
|
|
608
|
+
const mergeResult = await applyMergeableConfig(data);
|
|
609
|
+
return { managed: false, mergeResult };
|
|
610
|
+
}
|
|
403
611
|
//# sourceMappingURL=apply-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-config.js","sourceRoot":"","sources":["../../src/utils/apply-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apply-config.js","sourceRoot":"","sources":["../../src/utils/apply-config.ts"],"names":[],"mappings":"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"}
|