@openclaw-cloud/agent-controller 3.6.2 → 3.6.3

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.
Files changed (205) hide show
  1. package/dist/api.d.ts +2 -14
  2. package/dist/api.js +1 -15
  3. package/dist/api.js.map +1 -1
  4. package/dist/commands/agent-update-cli.js +0 -7
  5. package/dist/commands/agent-update-cli.js.map +1 -1
  6. package/dist/commands/bootstrap.d.ts +0 -10
  7. package/dist/commands/bootstrap.js +2 -16
  8. package/dist/commands/bootstrap.js.map +1 -1
  9. package/dist/commands/channel-server.d.ts +0 -16
  10. package/dist/commands/channel-server.js +1 -19
  11. package/dist/commands/channel-server.js.map +1 -1
  12. package/dist/commands/deploy-cli.js +2 -12
  13. package/dist/commands/deploy-cli.js.map +1 -1
  14. package/dist/commands/diagnostics-cli.js +0 -6
  15. package/dist/commands/diagnostics-cli.js.map +1 -1
  16. package/dist/commands/install-deps.d.ts +0 -10
  17. package/dist/commands/install-deps.js +1 -10
  18. package/dist/commands/install-deps.js.map +1 -1
  19. package/dist/commands/install.js +0 -6
  20. package/dist/commands/install.js.map +1 -1
  21. package/dist/commands/package-install-cli.js +1 -14
  22. package/dist/commands/package-install-cli.js.map +1 -1
  23. package/dist/commands/plugin-update-cli.js +1 -8
  24. package/dist/commands/plugin-update-cli.js.map +1 -1
  25. package/dist/commands/restart-cli.js +0 -4
  26. package/dist/commands/restart-cli.js.map +1 -1
  27. package/dist/commands/self-update.d.ts +2 -24
  28. package/dist/commands/self-update.js +5 -54
  29. package/dist/commands/self-update.js.map +1 -1
  30. package/dist/commands/stop-cli.d.ts +0 -4
  31. package/dist/commands/stop-cli.js +1 -24
  32. package/dist/commands/stop-cli.js.map +1 -1
  33. package/dist/config-file.d.ts +3 -20
  34. package/dist/config-file.js +3 -22
  35. package/dist/config-file.js.map +1 -1
  36. package/dist/config.d.ts +0 -22
  37. package/dist/config.js +1 -34
  38. package/dist/config.js.map +1 -1
  39. package/dist/connection.js +2 -39
  40. package/dist/connection.js.map +1 -1
  41. package/dist/handlers/agent-update.d.ts +1 -21
  42. package/dist/handlers/agent-update.js +1 -21
  43. package/dist/handlers/agent-update.js.map +1 -1
  44. package/dist/handlers/chat.d.ts +0 -8
  45. package/dist/handlers/chat.js +3 -23
  46. package/dist/handlers/chat.js.map +1 -1
  47. package/dist/handlers/file-write.js +1 -4
  48. package/dist/handlers/file-write.js.map +1 -1
  49. package/dist/handlers/memory.d.ts +1 -9
  50. package/dist/handlers/memory.js +3 -25
  51. package/dist/handlers/memory.js.map +1 -1
  52. package/dist/handlers/onboarding.js +0 -2
  53. package/dist/handlers/onboarding.js.map +1 -1
  54. package/dist/handlers/pair.js +1 -3
  55. package/dist/handlers/pair.js.map +1 -1
  56. package/dist/handlers/plugin-update.d.ts +1 -16
  57. package/dist/handlers/plugin-update.js +1 -16
  58. package/dist/handlers/plugin-update.js.map +1 -1
  59. package/dist/handlers/restart.js +0 -2
  60. package/dist/handlers/restart.js.map +1 -1
  61. package/dist/handlers/self-update.d.ts +2 -29
  62. package/dist/handlers/self-update.js +3 -35
  63. package/dist/handlers/self-update.js.map +1 -1
  64. package/dist/handlers/slack-event.d.ts +2 -9
  65. package/dist/handlers/slack-event.js +2 -10
  66. package/dist/handlers/slack-event.js.map +1 -1
  67. package/dist/heartbeat.d.ts +2 -12
  68. package/dist/heartbeat.js +3 -18
  69. package/dist/heartbeat.js.map +1 -1
  70. package/dist/index.js +6 -50
  71. package/dist/index.js.map +1 -1
  72. package/dist/lockfile.d.ts +0 -7
  73. package/dist/lockfile.js +0 -9
  74. package/dist/lockfile.js.map +1 -1
  75. package/dist/memory-mcp-server.d.ts +1 -19
  76. package/dist/memory-mcp-server.js +5 -53
  77. package/dist/memory-mcp-server.js.map +1 -1
  78. package/dist/mock-board-worker.d.ts +2 -25
  79. package/dist/mock-board-worker.js +7 -54
  80. package/dist/mock-board-worker.js.map +1 -1
  81. package/dist/platform/linux.js +0 -3
  82. package/dist/platform/linux.js.map +1 -1
  83. package/dist/platform/macos.js +0 -2
  84. package/dist/platform/macos.js.map +1 -1
  85. package/dist/providers/chat-types.d.ts +0 -3
  86. package/dist/providers/chat-types.js +0 -3
  87. package/dist/providers/chat-types.js.map +1 -1
  88. package/dist/providers/claude-code/channel-server.d.ts +0 -19
  89. package/dist/providers/claude-code/channel-server.js +0 -19
  90. package/dist/providers/claude-code/channel-server.js.map +1 -1
  91. package/dist/providers/claude-code/index.d.ts +0 -22
  92. package/dist/providers/claude-code/index.js +3 -26
  93. package/dist/providers/claude-code/index.js.map +1 -1
  94. package/dist/providers/claude-code/login-flow.d.ts +0 -17
  95. package/dist/providers/claude-code/login-flow.js +2 -16
  96. package/dist/providers/claude-code/login-flow.js.map +1 -1
  97. package/dist/providers/claude-code/settings-writer.d.ts +1 -16
  98. package/dist/providers/claude-code/settings-writer.js +5 -20
  99. package/dist/providers/claude-code/settings-writer.js.map +1 -1
  100. package/dist/providers/claude-code/socket-bridge.d.ts +0 -35
  101. package/dist/providers/claude-code/socket-bridge.js +2 -43
  102. package/dist/providers/claude-code/socket-bridge.js.map +1 -1
  103. package/dist/providers/claude-code/spawn-claude.d.ts +0 -17
  104. package/dist/providers/claude-code/spawn-claude.js +1 -15
  105. package/dist/providers/claude-code/spawn-claude.js.map +1 -1
  106. package/dist/providers/index.d.ts +1 -10
  107. package/dist/providers/index.js +2 -13
  108. package/dist/providers/index.js.map +1 -1
  109. package/dist/providers/mock/index.d.ts +0 -4
  110. package/dist/providers/mock/index.js +0 -4
  111. package/dist/providers/mock/index.js.map +1 -1
  112. package/dist/providers/openclaw/auto-pair.d.ts +1 -6
  113. package/dist/providers/openclaw/auto-pair.js +1 -10
  114. package/dist/providers/openclaw/auto-pair.js.map +1 -1
  115. package/dist/providers/openclaw/device-identity.d.ts +1 -1
  116. package/dist/providers/openclaw/device-identity.js +33 -17
  117. package/dist/providers/openclaw/device-identity.js.map +1 -1
  118. package/dist/providers/openclaw/gateway-adapter.d.ts +0 -5
  119. package/dist/providers/openclaw/gateway-adapter.js +4 -32
  120. package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
  121. package/dist/providers/openclaw/gateway-client.js +3 -9
  122. package/dist/providers/openclaw/gateway-client.js.map +1 -1
  123. package/dist/providers/openclaw/index.js +2 -15
  124. package/dist/providers/openclaw/index.js.map +1 -1
  125. package/dist/providers/types.d.ts +0 -10
  126. package/dist/slack-relay-server.d.ts +4 -33
  127. package/dist/slack-relay-server.js +9 -57
  128. package/dist/slack-relay-server.js.map +1 -1
  129. package/dist/types.d.ts +1 -12
  130. package/dist/types.js +0 -6
  131. package/dist/types.js.map +1 -1
  132. package/dist/utils/agent-controller-bin.d.ts +0 -6
  133. package/dist/utils/agent-controller-bin.js +1 -21
  134. package/dist/utils/agent-controller-bin.js.map +1 -1
  135. package/dist/utils/anthropic-auth.d.ts +1 -22
  136. package/dist/utils/anthropic-auth.js +0 -10
  137. package/dist/utils/anthropic-auth.js.map +1 -1
  138. package/dist/utils/apply-config.d.ts +7 -74
  139. package/dist/utils/apply-config.js +30 -221
  140. package/dist/utils/apply-config.js.map +1 -1
  141. package/dist/utils/backup-push.d.ts +0 -10
  142. package/dist/utils/backup-push.js +0 -15
  143. package/dist/utils/backup-push.js.map +1 -1
  144. package/dist/utils/claude-env.d.ts +1 -10
  145. package/dist/utils/claude-env.js +2 -14
  146. package/dist/utils/claude-env.js.map +1 -1
  147. package/dist/utils/config-merge-paths.d.ts +5 -43
  148. package/dist/utils/config-merge-paths.js +5 -43
  149. package/dist/utils/config-merge-paths.js.map +1 -1
  150. package/dist/utils/deploy-type.d.ts +1 -13
  151. package/dist/utils/deploy-type.js +2 -19
  152. package/dist/utils/deploy-type.js.map +1 -1
  153. package/dist/utils/diagnostics.d.ts +0 -7
  154. package/dist/utils/diagnostics.js +0 -15
  155. package/dist/utils/diagnostics.js.map +1 -1
  156. package/dist/utils/exec.d.ts +0 -10
  157. package/dist/utils/exec.js +2 -32
  158. package/dist/utils/exec.js.map +1 -1
  159. package/dist/utils/gateway-restart-handler.d.ts +1 -8
  160. package/dist/utils/gateway-restart-handler.js +1 -8
  161. package/dist/utils/gateway-restart-handler.js.map +1 -1
  162. package/dist/utils/gateway-restart.d.ts +1 -11
  163. package/dist/utils/gateway-restart.js +1 -11
  164. package/dist/utils/gateway-restart.js.map +1 -1
  165. package/dist/utils/knowledge-graph.d.ts +2 -25
  166. package/dist/utils/knowledge-graph.js +2 -37
  167. package/dist/utils/knowledge-graph.js.map +1 -1
  168. package/dist/utils/knowledge-push.d.ts +0 -4
  169. package/dist/utils/knowledge-push.js +4 -19
  170. package/dist/utils/knowledge-push.js.map +1 -1
  171. package/dist/utils/legacy-mcp-servers.d.ts +1 -11
  172. package/dist/utils/legacy-mcp-servers.js +1 -11
  173. package/dist/utils/legacy-mcp-servers.js.map +1 -1
  174. package/dist/utils/log-collector.js +0 -2
  175. package/dist/utils/log-collector.js.map +1 -1
  176. package/dist/utils/openclaw-ops.d.ts +5 -72
  177. package/dist/utils/openclaw-ops.js +6 -98
  178. package/dist/utils/openclaw-ops.js.map +1 -1
  179. package/dist/utils/openclaw-stack-update.d.ts +2 -14
  180. package/dist/utils/openclaw-stack-update.js +1 -6
  181. package/dist/utils/openclaw-stack-update.js.map +1 -1
  182. package/dist/utils/package-install.d.ts +0 -5
  183. package/dist/utils/package-install.js +2 -21
  184. package/dist/utils/package-install.js.map +1 -1
  185. package/dist/utils/package-version.d.ts +1 -9
  186. package/dist/utils/package-version.js +1 -9
  187. package/dist/utils/package-version.js.map +1 -1
  188. package/dist/utils/parse-id-at-version.d.ts +1 -11
  189. package/dist/utils/parse-id-at-version.js +1 -11
  190. package/dist/utils/parse-id-at-version.js.map +1 -1
  191. package/dist/utils/plugin-reconcile.d.ts +2 -33
  192. package/dist/utils/plugin-reconcile.js +7 -77
  193. package/dist/utils/plugin-reconcile.js.map +1 -1
  194. package/dist/utils/release-channel.d.ts +0 -8
  195. package/dist/utils/release-channel.js.map +1 -1
  196. package/dist/utils/write-home-files.d.ts +2 -24
  197. package/dist/utils/write-home-files.js +3 -27
  198. package/dist/utils/write-home-files.js.map +1 -1
  199. package/dist/utils/write-workspace-files.d.ts +0 -14
  200. package/dist/utils/write-workspace-files.js +1 -19
  201. package/dist/utils/write-workspace-files.js.map +1 -1
  202. package/dist/workspace.d.ts +1 -21
  203. package/dist/workspace.js +1 -21
  204. package/dist/workspace.js.map +1 -1
  205. package/package.json +1 -1
@@ -21,39 +21,16 @@ function getOpenclawDir() {
21
21
  function getAuthProfilesPath() {
22
22
  return path.join(getOpenclawDir(), 'agents', 'main', 'agent', 'auth-profiles.json');
23
23
  }
24
- /** Canonical openclaw.json location — `<stateDir>/openclaw.json`. */
25
24
  export function getOpenclawJsonPath() {
26
25
  return path.join(getOpenclawDir(), 'openclaw.json');
27
26
  }
28
- /**
29
- * The ONE writer for openclaw.json — atomic (tmp + rename) and mode 0600.
30
- *
31
- * Both properties are load-bearing and used to be split across three
32
- * independent write sites: the full apply wrote 0600 but non-atomically (a
33
- * reader could see a truncated file), the scoped merge wrote atomically but
34
- * with no mode (tmp + rename RESETS a pre-existing 0600 file to 0644, leaking
35
- * `models.providers[*].apiKey`), and the startup memory-MCP injection did
36
- * neither. Everything goes through here now.
37
- */
27
+ /** Atomic writes prevent truncated reads; explicit 0600 protects provider keys even after tmp+rename. */
38
28
  export async function writeOpenclawJson(data) {
39
29
  await writeJsonAtomic(getOpenclawJsonPath(), data, 0o600);
40
30
  }
41
31
  /**
42
- * Generate auth-profiles.json from openclaw.json auth config + envVars.
43
- * openclaw.json contains profile declarations (provider, mode) without secrets.
44
- * envVars contains the actual API keys.
45
- *
46
- * Only for openclaw < 2026.9 — see `shouldWriteAuthProfiles`. openclaw 2026.9+
47
- * keeps auth profiles in SQLite (`agents/main/agent/openclaw-agent.sqlite`) and
48
- * treats ANY auth-profiles.json as a legacy store: every reply then fails with
49
- * "Auth profile store … requires legacy credential migration; … run openclaw
50
- * doctor --fix". `doctor --fix` migrates and deletes the file, but the next
51
- * update_config (sent on every transition to running) wrote it again, so all
52
- * VM agents on 2026.9.6 broke on every restart (incident 2026-09-28). The file
53
- * is redundant there anyway: the proxy key is `models.providers.<id>.apiKey`
54
- * in openclaw.json, and own_key keys reach openclaw via `.env`
55
- * (OPENAI_API_KEY / ANTHROPIC_API_KEY). Kept for older runtimes: a stopped VM
56
- * on 2026.7.x boots its old openclaw before self_update gets to it.
32
+ * OpenClaw 2026.9+ uses SQLite and rejects any legacy auth-profiles.json; see shouldWriteAuthProfiles.
33
+ * Older runtimes still need the file because they can start before self_update runs.
57
34
  */
58
35
  async function writeAuthProfiles(openclawConfig, envVars) {
59
36
  const auth = openclawConfig.auth;
@@ -62,9 +39,7 @@ async function writeAuthProfiles(openclawConfig, envVars) {
62
39
  await fs.mkdir(path.dirname(profilesPath), { recursive: true });
63
40
  const profiles = {};
64
41
  if (auth?.profiles) {
65
- // own_key mode: profiles defined in auth.profiles
66
42
  for (const [profileName, profile] of Object.entries(auth.profiles)) {
67
- // Find the API key from envVars by provider name
68
43
  const providerEnvMap = {
69
44
  anthropic: 'ANTHROPIC_API_KEY',
70
45
  openai: 'OPENAI_API_KEY',
@@ -83,7 +58,6 @@ async function writeAuthProfiles(openclawConfig, envVars) {
83
58
  }
84
59
  }
85
60
  else if (models?.providers) {
86
- // smart routing: proxy provider defined in models.providers
87
61
  for (const [providerName, providerConfig] of Object.entries(models.providers)) {
88
62
  const token = providerConfig.apiKey ?? envVars.ANTHROPIC_API_KEY ?? '';
89
63
  if (token) {
@@ -115,7 +89,6 @@ export function shouldWriteAuthProfiles(version) {
115
89
  const month = Number(match[2]);
116
90
  return year < 2026 || (year === 2026 && month < 9);
117
91
  }
118
- /** Version gate for step 2 of `applyBootstrapConfig`; logs why it skips. */
119
92
  async function authProfilesWanted() {
120
93
  let version;
121
94
  try {
@@ -139,23 +112,16 @@ async function fileExists(p) {
139
112
  return false;
140
113
  }
141
114
  }
142
- /**
143
- * Write `skills` through the same hardened writer as workspace files. Skills
144
- * used to have their own copy of this logic in commands/bootstrap.ts that had
145
- * no path-containment check, so a backend-supplied key like
146
- * '../../.claude/settings.json' escaped the workspace.
147
- */
115
+ // Backend skill paths need the same containment checks as workspace files.
148
116
  async function writeSkills(data, logPrefix) {
149
117
  if (!data.skills || Object.keys(data.skills).length === 0)
150
118
  return;
151
119
  const wrote = await writeWorkspaceFiles(data.skills, getWorkspaceDir());
152
120
  console.log(`${logPrefix} wrote ${wrote} skill files`);
153
121
  }
154
- /** Fingerprint of the last payload `applyBootstrapConfig` applied — see step 5. */
155
122
  function getLastAppliedHashPath() {
156
123
  return path.join(getConfigDir(), 'last-applied.sha256');
157
124
  }
158
- /** Recursively sorts object keys, so equal payloads serialize identically. */
159
125
  function canonicalize(value) {
160
126
  if (Array.isArray(value))
161
127
  return value.map(canonicalize);
@@ -165,12 +131,7 @@ function canonicalize(value) {
165
131
  .sort()
166
132
  .map((k) => [k, canonicalize(value[k])]));
167
133
  }
168
- /**
169
- * sha256 of everything `applyBootstrapConfig` writes to disk, serialized with
170
- * sorted keys. Deliberately the PAYLOAD and never the files on disk: gateway
171
- * 2026.9 writes its own `meta` / `wizard` / `skills` back into openclaw.json,
172
- * so the file never equals what we wrote.
173
- */
134
+ /** Hash the payload: gateway 2026.9 rewrites meta/wizard/skills, so disk content is not a stable baseline. */
174
135
  export function payloadFingerprint(data) {
175
136
  const { openclawConfig, envVars, workspaceFiles, skills, homeFiles } = data;
176
137
  const canonical = JSON.stringify(canonicalize({ openclawConfig, envVars, workspaceFiles, skills, homeFiles }));
@@ -184,55 +145,35 @@ async function readLastAppliedHash() {
184
145
  return undefined; // never applied here (or unreadable) → treat as changed
185
146
  }
186
147
  }
187
- /**
188
- * Vars without which agent-controller cannot boot: `requireConfig` exits the
189
- * process when any is missing. The VM provisioner writes them; nothing that
190
- * arrives later over the wire may remove them from the VM `.env`.
191
- */
148
+ /** A remote update must preserve the provisioner's boot identity or requireConfig will terminate startup. */
192
149
  const BOOT_CRITICAL_ENV_KEYS = [
193
150
  'AGENT_ID',
194
151
  'AGENT_TOKEN',
195
152
  'CENTRIFUGO_URL',
196
153
  'BACKEND_URL',
197
154
  ];
198
- /**
199
- * FULL apply — only ever legal on a managed install (see `isManagedDeploy`).
200
- * Rewrites files wholesale:
201
- * 1. Write openclaw.json
202
- * 2. Write workspace files + skills
203
- * 3. Write auth-profiles.json (openclaw < 2026.9 only) + settings.json (from envVars)
204
- * 4. MERGE .env (for VM agents) — never a wholesale replace, see step 4 below
205
- * 5. Restart gateway — only when the payload differs from the last one applied
206
- */
155
+ /** Wholesale writes are allowed only for managed installs; see isManagedDeploy. */
207
156
  export async function applyBootstrapConfig(data) {
208
- // 1. Write openclaw.json
209
157
  if (data.openclawConfig) {
210
158
  await writeOpenclawJson(data.openclawConfig);
211
159
  console.log('[apply-config] openclaw.json updated');
212
160
  }
213
- // 1a. Write workspace files (shared files pushed by backend on update_config)
214
161
  if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
215
162
  const workspaceDir = getWorkspaceDir();
216
163
  const wrote = await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
217
164
  console.log(`[apply-config] wrote ${wrote} workspace files`);
218
165
  }
219
- // 1b. Write skills (same sandbox as workspace files — they share the dir)
220
166
  await writeSkills(data, '[apply-config]');
221
- // 1c. Write home files — platform-managed credentials placed outside the
222
- // workspace (~/.secrets/SECRETS.txt) so knowledge sync never indexes them.
167
+ // Credentials stay outside the workspace so knowledge sync never indexes them.
223
168
  const wroteHomeFiles = await writeHomeFiles(data.homeFiles);
224
169
  if (wroteHomeFiles > 0) {
225
170
  console.log(`[apply-config] wrote ${wroteHomeFiles} home files`);
226
171
  }
227
- // 2. Write auth-profiles.json from openclawConfig.auth.profiles + envVars (API keys)
228
- // — only for openclaw < 2026.9, see writeAuthProfiles.
229
172
  if (data.openclawConfig && data.envVars && (await authProfilesWanted())) {
230
173
  await writeAuthProfiles(data.openclawConfig, data.envVars);
231
174
  console.log('[apply-config] auth-profiles.json updated');
232
175
  }
233
- // 3. Write settings.json (Claude Code CLI config) from envVars
234
176
  if (data.envVars && Object.keys(data.envVars).length > 0) {
235
- // Filter out empty string values (signals "remove this key")
236
177
  const cleanEnvVars = {};
237
178
  for (const [k, v] of Object.entries(data.envVars)) {
238
179
  if (v !== '')
@@ -240,40 +181,19 @@ export async function applyBootstrapConfig(data) {
240
181
  }
241
182
  await writeClaudeEnv(cleanEnvVars);
242
183
  console.log('[apply-config] settings.json updated');
243
- // 4. Update .env for VM agents — a MERGE onto the existing file, never a
244
- // replace.
245
- //
246
- // This used to write `{ ...cleanEnvVars, AGENT_DEPLOY_TYPE }`, i.e. the
247
- // payload's envVars wholesale. But the payload only carries proxy
248
- // credentials (ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL …), so every
249
- // boot-critical var the VM provisioner wrote — AGENT_ID, AGENT_TOKEN,
250
- // CENTRIFUGO_URL, BACKEND_URL, OPENCLAW_GATEWAY_TOKEN, USER_ID,
251
- // WORKSPACE_ID — was deleted on the first successful update_config. The
252
- // next service restart then booted a controller with no identity,
253
- // `requireConfig` exited, and the agent was simply dead.
254
- //
255
- // It shipped that way for months, masked by an EACCES on this file (the
256
- // provisioner left the dir root-owned, so the write always failed). Fixing
257
- // those permissions on 2026-08-08 unmasked it: the first update_config
258
- // afterwards clobbered .env on all 5 running VMs and killed agent
259
- // 87b96f43 overnight (incident 2026-08-09).
184
+ // Payloads carry credentials, not the complete VM environment. Merge to preserve provisioned boot identity.
260
185
  const deployType = getResolvedDeployType();
261
186
  if (deployType === 'vm' || (await fileExists(VM_ENV_PATH))) {
262
187
  const existingVars = await readEnvFile(VM_ENV_PATH);
263
188
  const envOut = { ...existingVars, ...cleanEnvVars };
264
- // An empty payload value means "remove this key" — the same signal
265
- // `cleanEnvVars` strips out for settings.json, applied here to the file
266
- // the key actually lives in. Without this there would be no way to
267
- // retire a rotated credential from a VM once merging began.
189
+ // Empty values revoke existing credentials; dropping them before the merge would make removal impossible.
268
190
  for (const [k, v] of Object.entries(data.envVars)) {
269
191
  if (v === '')
270
192
  delete envOut[k];
271
193
  }
272
194
  if (deployType)
273
195
  envOut.AGENT_DEPLOY_TYPE = deployType;
274
- // Belt and braces: whatever the backend sends, a config update must not
275
- // be able to leave the controller unable to boot. If one of these was in
276
- // the file and the merge would drop or blank it, keep what was there.
196
+ // Remote payloads must not remove or blank provisioned boot-critical values.
277
197
  for (const k of BOOT_CRITICAL_ENV_KEYS) {
278
198
  if (existingVars[k] && !envOut[k]) {
279
199
  console.warn(`[apply-config] refusing to remove boot-critical ${k} from .env — keeping existing value`);
@@ -284,22 +204,15 @@ export async function applyBootstrapConfig(data) {
284
204
  console.log('[apply-config] .env updated');
285
205
  }
286
206
  }
287
- // 5. Restart gateway — only when the payload changed since the last apply.
288
- //
289
- // The backend sends update_config on EVERY transition to running
290
- // (reconfigure_on_start, no cooldown). On openclaw 2026.9.6 the restart takes
291
- // ~50-70 s, longer than the heartbeat's 30 s demotion window: the agent fell
292
- // back to provisioning, the next transition to running sent the same payload,
293
- // which restarted the gateway again — a loop every ~1.5 min (incident
294
- // 2026-09-28). An unchanged payload gives the restart nothing to pick up.
207
+ // Repeated update_config follows every running transition; restarting an unchanged payload can
208
+ // exceed the heartbeat demotion window and cause a running/provisioning restart loop.
295
209
  const fingerprint = payloadFingerprint(data);
296
210
  const hashPath = getLastAppliedHashPath();
297
211
  if ((await readLastAppliedHash()) === fingerprint) {
298
212
  console.log(`[apply-config] payload unchanged (sha256 ${fingerprint.slice(0, 12)}); gateway restart skipped`);
299
213
  return;
300
214
  }
301
- // Recorded only now that every write above succeeded, and before the restart.
302
- // A lost record just means the next apply restarts again — the old behaviour.
215
+ // Record only after writes succeed; losing the record merely causes another restart.
303
216
  try {
304
217
  await fs.mkdir(path.dirname(hashPath), { recursive: true });
305
218
  await fs.writeFile(hashPath, fingerprint + '\n');
@@ -307,13 +220,7 @@ export async function applyBootstrapConfig(data) {
307
220
  catch (err) {
308
221
  console.warn(`[apply-config] could not record payload sha256: ${toErrorMessage(err)}`);
309
222
  }
310
- // Stays best-effort by design — the apply must not depend on it (see CLAUDE.md).
311
- // But a failure here is not cosmetic either: writing the config stops the
312
- // channels for a plugin reload, and this restart is what brings them back. On
313
- // 2026-08-26 the restart failed on two VM agents and only `console.error` knew;
314
- // `update_config` reported success and they sat deaf to Slack for ~50 minutes.
315
- // So it now also emits a domain event, which lands in `agent_log` and is
316
- // queryable by agentId.
223
+ // Apply remains successful, but surface restart failures to backend logs because channels may stay down.
317
224
  try {
318
225
  await restartGateway();
319
226
  console.log('[apply-config] gateway restarted');
@@ -326,9 +233,7 @@ export async function applyBootstrapConfig(data) {
326
233
  try {
327
234
  await fs.rm(hashPath, { force: true });
328
235
  }
329
- catch {
330
- // Nothing recorded, nothing to forget.
331
- }
236
+ catch { }
332
237
  logCollector?.push('gateway_restart_failed', 'error', 'Gateway restart failed after config apply', {
333
238
  error: message,
334
239
  });
@@ -364,7 +269,6 @@ function deepEqual(a, b) {
364
269
  }
365
270
  return false;
366
271
  }
367
- /** Walk dot-path into object; returns undefined if any segment missing. */
368
272
  function getPath(obj, dotPath) {
369
273
  const parts = dotPath.split('.');
370
274
  let cur = obj;
@@ -375,7 +279,6 @@ function getPath(obj, dotPath) {
375
279
  }
376
280
  return cur;
377
281
  }
378
- /** Set dot-path on object, creating intermediate objects as needed. */
379
282
  function setPath(obj, dotPath, value) {
380
283
  const parts = dotPath.split('.');
381
284
  const leaf = parts[parts.length - 1];
@@ -392,18 +295,13 @@ function setPath(obj, dotPath, value) {
392
295
  }
393
296
  cur[leaf] = value;
394
297
  }
395
- /**
396
- * Keys whose values must never reach a log line. Matched case-insensitively
397
- * against the key NAME, so it also catches nested holders like
398
- * `headers.Authorization` and `env.ANTHROPIC_API_KEY`.
399
- */
298
+ /** Match secret-bearing key names, including nested Authorization and provider-key holders. */
400
299
  const SECRET_KEY_RE = /token|secret|key|auth|password|credential/i;
401
300
  function maskSecretValue(v) {
402
301
  if (typeof v !== 'string')
403
302
  return '***';
404
303
  return v.length <= 4 ? '***' : `***${v.slice(-4)}`;
405
304
  }
406
- /** Deep copy of a config value with secret-ish leaves masked, for logging only. */
407
305
  function maskSecrets(value) {
408
306
  if (Array.isArray(value))
409
307
  return value.map(maskSecrets);
@@ -415,27 +313,10 @@ function maskSecrets(value) {
415
313
  }
416
314
  return out;
417
315
  }
418
- /** One-line, secret-masked rendering of a config value for a log message. */
419
316
  function describeForLog(value) {
420
317
  return JSON.stringify(maskSecrets(value));
421
318
  }
422
- /**
423
- * Merge a single allowlisted path from remote into local.
424
- *
425
- * Semantics:
426
- * - If local missing → copy remote (added).
427
- * - If both plain objects → key-by-key merge; new keys added, conflicting
428
- * keys (existing key with different value) logged + skipped (local wins),
429
- * UNLESS `remoteWins` — then the local entry is overwritten with the remote
430
- * one and the change is logged (old → new, secrets masked).
431
- * - Otherwise (scalars / arrays / subtree) → equality check: equal = no-op,
432
- * differ = conflict (local wins).
433
- *
434
- * `remoteWins` is only used for `mcp.servers` in openclaw.json. That section is
435
- * backend-managed (rotated tokens, changed URLs) and local-wins meant an
436
- * updated server entry could never reach a standalone agent. Every other
437
- * mergeable path — and ALL of ~/.claude/settings.json — keeps local-wins.
438
- */
319
+ /** Only openclaw.json mcp.servers may be remote-wins, so rotated backend credentials can reach the agent. */
439
320
  function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
440
321
  const remoteVal = getPath(remote, dotPath);
441
322
  if (remoteVal === undefined)
@@ -446,7 +327,6 @@ function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
446
327
  console.log(`${logPrefix} ADDED ${dotPath}`);
447
328
  return { changed: true, outcome: 'added' };
448
329
  }
449
- // Both objects → key-level merge
450
330
  if (isPlainObject(localVal) && isPlainObject(remoteVal)) {
451
331
  const added = [];
452
332
  const overwritten = [];
@@ -489,7 +369,6 @@ function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
489
369
  }
490
370
  return { changed: true, outcome: 'merged', detail };
491
371
  }
492
- // Leaf or array or mismatched types → equality check
493
372
  if (deepEqual(localVal, remoteVal)) {
494
373
  return { changed: false, outcome: 'equal' };
495
374
  }
@@ -506,13 +385,7 @@ async function readJsonSafe(filePath) {
506
385
  return null;
507
386
  }
508
387
  }
509
- /**
510
- * Write JSON through a tmp file + rename so a reader never sees a half-written
511
- * config. Without an explicit `mode` the existing file's permissions are
512
- * carried over: the tmp is a brand-new inode, so a plain rename would silently
513
- * relax a 0600 file (e.g. a user's ~/.claude/settings.json) to whatever the
514
- * umask allows.
515
- */
388
+ /** Preserve existing mode: tmp+rename creates a new inode and can otherwise relax a secret file to 0644. */
516
389
  async function writeJsonAtomic(filePath, data, mode) {
517
390
  await fs.mkdir(path.dirname(filePath), { recursive: true });
518
391
  let effectiveMode = mode;
@@ -534,59 +407,21 @@ async function writeJsonAtomic(filePath, data, mode) {
534
407
  await fs.rename(tmp, filePath);
535
408
  }
536
409
  /**
537
- * Merge allowlisted mergeable sections from remote payload into existing
538
- * openclaw.json. Used for standalone deployments where users own their own
539
- * config and a full overwrite would destroy customizations.
540
- *
541
- * Rules:
542
- * - Only paths in `MERGEABLE_CONFIG_PATHS` are considered.
543
- * - Missing local value → remote is written.
544
- * - Equal values → no-op.
545
- * - Differing values → conflict, local wins, warn+skip logged.
546
- * - For object paths: conflict detection is per-key inside the dict.
547
- * - **Exception — `mcp.servers` in openclaw.json is REMOTE-wins per key.**
548
- * That section is backend-managed: the URL, transport and bearer token of a
549
- * backend-generated server (e.g. `openclaw-cloud`) change over time, and
550
- * under local-wins an updated entry could never reach a standalone agent —
551
- * a rotated token was skipped forever (observed live 2026-08-02). Every
552
- * server NAME present in the payload is overwritten; names that exist only
553
- * locally are left untouched.
554
- * LIMITATION — no deletions. A server removed in the backend stays in the
555
- * local openclaw.json: the payload cannot distinguish "removed upstream"
556
- * from "never managed here", and dropping local-only entries would delete
557
- * the user's own servers. Removal on standalone is a manual edit.
558
- * - Restarts the gateway **iff** the `mcp.servers` subtree actually changed.
559
- * This is a FALLBACK, not the primary delivery mechanism: openclaw
560
- * does self-reload this section (verified live 2026-08-03 — the gateway
561
- * logged `[reload] config hot reload applied (mcp.servers.<name>.url,
562
- * mcp.servers.<name>.headers)` on an overwrite, with no restart). The
563
- * restart covers builds/paths where that self-reload does not fire, and
564
- * mirrors what applyBootstrapConfig does on managed installs. It is
565
- * best-effort: a failure is logged and does not fail the apply — on a
566
- * launchd box where `openclaw` is not on the service PATH it never runs at
567
- * all, and the merge still lands.
568
- * - Settings.json (~/.claude/settings.json) keeps LOCAL-wins for
569
- * `mcp.servers` ONLY — apiKeyHelper/permissions/env/etc untouched. `env` is
570
- * never written here: it would redirect the user's own Claude Code sessions
571
- * to the platform proxy (see MERGEABLE_SETTINGS_PATHS).
572
- * - auth-profiles.json and .env are NOT touched on standalone.
410
+ * Standalone merges must preserve user-owned config. Only openclaw.json mcp.servers is remote-wins;
411
+ * local-only servers cannot be deleted because absence does not prove prior backend ownership.
412
+ * Claude settings permit only local-wins mcp.servers: env would redirect the user's own sessions.
573
413
  */
574
414
  export async function applyMergeableConfig(data) {
575
415
  const result = { changed: false, outcomes: [] };
576
- // Surface the intentional MVP gap: workspace files are skipped on standalone.
577
416
  if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
578
417
  console.log('[config-merge] workspaceFiles not applied on standalone — intentional MVP limitation');
579
418
  }
580
- // Same for home files: writing platform credentials into a third-party
581
- // user's HOME is exactly the class of mistake this branch exists to prevent.
582
- // `writeHomeFiles` enforces that itself; this line just makes the skip visible.
419
+ // Third-party HOME must never receive platform credentials; writeHomeFiles enforces the same guard.
583
420
  if (data.homeFiles && Object.keys(data.homeFiles).length > 0) {
584
421
  console.log('[config-merge] homeFiles not applied on standalone — managed installs only');
585
422
  }
586
- // Skills ARE applied: they live under the platform-owned .agents/skills/
587
- // namespace, and the CLI bootstrap wrote them on standalone all along.
423
+ // Skills remain writable in the platform-owned .agents/skills namespace.
588
424
  await writeSkills(data, '[config-merge] skills:');
589
- // --- openclaw.json ---
590
425
  let mcpServersChanged = false;
591
426
  if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
592
427
  const configPath = getOpenclawJsonPath();
@@ -594,9 +429,7 @@ export async function applyMergeableConfig(data) {
594
429
  const local = existing ?? {};
595
430
  const isFreshFile = existing === null;
596
431
  const remoteConfig = data.openclawConfig;
597
- // Snapshot the section BEFORE any mutation (the legacy migration below can
598
- // move entries into it too) so the restart decision reflects what the
599
- // running gateway would actually see change.
432
+ // Snapshot before legacy migration too, so the restart covers every change visible to the gateway.
600
433
  const mcpServersBefore = structuredClone(getPath(local, MCP_SERVERS_PATH));
601
434
  // One-shot migration of the local file: lift any pre-existing flat
602
435
  // `mcpServers` into `mcp.servers` so the OpenClaw CLI's strict schema
@@ -621,11 +454,7 @@ export async function applyMergeableConfig(data) {
621
454
  console.log('[config-merge] openclaw.json unchanged');
622
455
  }
623
456
  }
624
- // --- ~/.claude/settings.json ---
625
- // Only merge if the payload carries MCP servers. `data.envVars` is
626
- // deliberately NOT projected into `env` here — see MERGEABLE_SETTINGS_PATHS.
627
- // Canonical shape in Claude Code's settings.json is `mcp.servers` (nested);
628
- // the backend always sends that shape.
457
+ // Never project envVars into standalone Claude settings; see MERGEABLE_SETTINGS_PATHS.
629
458
  const settingsLikeRemote = {};
630
459
  if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
631
460
  const oc = data.openclawConfig;
@@ -641,14 +470,7 @@ export async function applyMergeableConfig(data) {
641
470
  // synthesize Claude CLI settings on a machine that doesn't use Claude CLI.
642
471
  if (existing) {
643
472
  const local = existing;
644
- // One-shot migration: if settings.json has the legacy flat `mcpServers`
645
- // key, lift its entries into `mcp.servers` (local wins on conflict) and
646
- // remove the flat key. Survives across runs (idempotent).
647
- //
648
- // `changed` is per-FILE on purpose. It used to write into the shared
649
- // `result.changed`, which made "did settings.json change?" true whenever
650
- // openclaw.json had changed earlier — settings.json got rewritten even
651
- // when every one of its own merges was a no-op.
473
+ // Track changes per file so an openclaw.json update cannot trigger a no-op settings.json rewrite.
652
474
  let changed = migrateLegacyMcpServers(local, '[settings-merge]');
653
475
  for (const p of MERGEABLE_SETTINGS_PATHS) {
654
476
  const r = mergePath(local, settingsLikeRemote, p, '[settings-merge]');
@@ -669,12 +491,8 @@ export async function applyMergeableConfig(data) {
669
491
  console.log('[settings-merge] ~/.claude/settings.json absent — skipping (standalone user owns it)');
670
492
  }
671
493
  }
672
- // Fallback delivery for `mcp.servers`. Openclaw DOES self-reload
673
- // this section (verified live 2026-08-03), so on a current runtime this
674
- // restart is belt-and-braces; it exists for builds where the self-reload does
675
- // not cover `mcp.servers`, and mirrors applyBootstrapConfig on managed. Fires
676
- // only when the section actually moved, so a no-op payload never bounces a
677
- // busy gateway (this gateway also hosts the running agent).
494
+ // Best-effort fallback for builds that do not reload mcp.servers. Restart only for a changed subtree
495
+ // so a no-op payload cannot interrupt the running agent.
678
496
  if (mcpServersChanged) {
679
497
  console.log('[config-merge] mcp.servers changed — restarting gateway');
680
498
  try {
@@ -689,16 +507,7 @@ export async function applyMergeableConfig(data) {
689
507
  }
690
508
  return result;
691
509
  }
692
- /**
693
- * The one owner of "fetch bootstrap and apply it". Every caller — the
694
- * `update_config` WS handler, the `bootstrap` CLI, the opt-in startup refresh —
695
- * goes through here so the deploy-type decision cannot drift between them.
696
- *
697
- * Managed installs ('vm'/'k8s') are provisioned end to end by the platform and
698
- * get the full apply. Anything else — 'standalone', 'external', or a payload
699
- * from an older backend that omits `deploymentType` — is a third-party machine
700
- * and gets the scoped, additive merge only. Never rewrite files we don't own.
701
- */
510
+ /** One deploy-type decision serves WS, CLI and startup; unknown installs must retain scoped ownership. */
702
511
  export async function fetchAndApplyConfig(api, agentId) {
703
512
  const data = await api.agentBootstrap(agentId);
704
513
  setResolvedDeployType(data.deploymentType);
@@ -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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"}
@@ -3,15 +3,5 @@ interface BackupResult {
3
3
  snapshotId: string;
4
4
  sizeBytes: number;
5
5
  }
6
- /**
7
- * Create a workspace backup and upload it to backend.
8
- * Used by both CLI command and Centrifugo handler.
9
- *
10
- * Flow:
11
- * 1. api.backupInit() → get uploadUrl, snapshotId, method
12
- * 2. Create tar.gz archive of workspace
13
- * 3. Upload archive (presigned S3 PUT or backend API)
14
- * 4. api.backupComplete() (for presigned uploads)
15
- */
16
6
  export declare function pushBackupToBackend(api: AgentApi, agentId: string): Promise<BackupResult>;
17
7
  export {};
@@ -3,33 +3,18 @@ import { createReadStream } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { getWorkspaceDir } from '../workspace.js';
5
5
  import { createArchive } from './archive.js';
6
- /**
7
- * Create a workspace backup and upload it to backend.
8
- * Used by both CLI command and Centrifugo handler.
9
- *
10
- * Flow:
11
- * 1. api.backupInit() → get uploadUrl, snapshotId, method
12
- * 2. Create tar.gz archive of workspace
13
- * 3. Upload archive (presigned S3 PUT or backend API)
14
- * 4. api.backupComplete() (for presigned uploads)
15
- */
16
6
  export async function pushBackupToBackend(api, agentId) {
17
- // Step 1: Init — get upload details from backend
18
7
  const { snapshotId, uploadUrl, method } = await api.backupInit(agentId);
19
- // Step 2: Create archive
20
8
  const archivePath = path.join('/tmp', `backup-${Date.now()}.tar.gz`);
21
9
  try {
22
10
  await createArchive(archivePath, getWorkspaceDir());
23
11
  const stat = await fs.stat(archivePath);
24
- // Step 3: Upload
25
12
  if (method === 'presigned') {
26
13
  const stream = createReadStream(archivePath);
27
14
  await api.uploadRaw(uploadUrl, stream, 'application/gzip', stat.size);
28
- // Step 4: Notify backend
29
15
  await api.backupComplete(agentId, snapshotId, stat.size);
30
16
  }
31
17
  else {
32
- // Fallback: upload through backend API (local storage)
33
18
  const stream = createReadStream(archivePath);
34
19
  await api.uploadRaw(uploadUrl, stream, 'application/gzip', stat.size);
35
20
  }