@openclaw-cloud/agent-controller 3.6.1 → 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 +8 -68
  139. package/dist/utils/apply-config.js +75 -203
  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
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import fs from 'node:fs/promises';
2
3
  import path from 'node:path';
3
4
  import os from 'node:os';
@@ -6,7 +7,7 @@ import { writeWorkspaceFiles } from './write-workspace-files.js';
6
7
  import { writeHomeFiles } from './write-home-files.js';
7
8
  import { restartGateway } from './gateway-restart.js';
8
9
  import { logCollector } from '../connection.js';
9
- import { VM_ENV_PATH, readEnvFile, writeEnvFile } from '../config-file.js';
10
+ import { VM_ENV_PATH, getConfigDir, readEnvFile, writeEnvFile } from '../config-file.js';
10
11
  import { config } from '../config.js';
11
12
  import { getWorkspaceDir } from '../workspace.js';
12
13
  import { MCP_SERVERS_PATH, MERGEABLE_CONFIG_PATHS, MERGEABLE_SETTINGS_PATHS, } from './config-merge-paths.js';
@@ -20,39 +21,16 @@ function getOpenclawDir() {
20
21
  function getAuthProfilesPath() {
21
22
  return path.join(getOpenclawDir(), 'agents', 'main', 'agent', 'auth-profiles.json');
22
23
  }
23
- /** Canonical openclaw.json location — `<stateDir>/openclaw.json`. */
24
24
  export function getOpenclawJsonPath() {
25
25
  return path.join(getOpenclawDir(), 'openclaw.json');
26
26
  }
27
- /**
28
- * The ONE writer for openclaw.json — atomic (tmp + rename) and mode 0600.
29
- *
30
- * Both properties are load-bearing and used to be split across three
31
- * independent write sites: the full apply wrote 0600 but non-atomically (a
32
- * reader could see a truncated file), the scoped merge wrote atomically but
33
- * with no mode (tmp + rename RESETS a pre-existing 0600 file to 0644, leaking
34
- * `models.providers[*].apiKey`), and the startup memory-MCP injection did
35
- * neither. Everything goes through here now.
36
- */
27
+ /** Atomic writes prevent truncated reads; explicit 0600 protects provider keys even after tmp+rename. */
37
28
  export async function writeOpenclawJson(data) {
38
29
  await writeJsonAtomic(getOpenclawJsonPath(), data, 0o600);
39
30
  }
40
31
  /**
41
- * Generate auth-profiles.json from openclaw.json auth config + envVars.
42
- * openclaw.json contains profile declarations (provider, mode) without secrets.
43
- * envVars contains the actual API keys.
44
- *
45
- * Only for openclaw < 2026.9 — see `shouldWriteAuthProfiles`. openclaw 2026.9+
46
- * keeps auth profiles in SQLite (`agents/main/agent/openclaw-agent.sqlite`) and
47
- * treats ANY auth-profiles.json as a legacy store: every reply then fails with
48
- * "Auth profile store … requires legacy credential migration; … run openclaw
49
- * doctor --fix". `doctor --fix` migrates and deletes the file, but the next
50
- * update_config (sent on every transition to running) wrote it again, so all
51
- * VM agents on 2026.9.6 broke on every restart (incident 2026-09-28). The file
52
- * is redundant there anyway: the proxy key is `models.providers.<id>.apiKey`
53
- * in openclaw.json, and own_key keys reach openclaw via `.env`
54
- * (OPENAI_API_KEY / ANTHROPIC_API_KEY). Kept for older runtimes: a stopped VM
55
- * 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.
56
34
  */
57
35
  async function writeAuthProfiles(openclawConfig, envVars) {
58
36
  const auth = openclawConfig.auth;
@@ -61,9 +39,7 @@ async function writeAuthProfiles(openclawConfig, envVars) {
61
39
  await fs.mkdir(path.dirname(profilesPath), { recursive: true });
62
40
  const profiles = {};
63
41
  if (auth?.profiles) {
64
- // own_key mode: profiles defined in auth.profiles
65
42
  for (const [profileName, profile] of Object.entries(auth.profiles)) {
66
- // Find the API key from envVars by provider name
67
43
  const providerEnvMap = {
68
44
  anthropic: 'ANTHROPIC_API_KEY',
69
45
  openai: 'OPENAI_API_KEY',
@@ -82,7 +58,6 @@ async function writeAuthProfiles(openclawConfig, envVars) {
82
58
  }
83
59
  }
84
60
  else if (models?.providers) {
85
- // smart routing: proxy provider defined in models.providers
86
61
  for (const [providerName, providerConfig] of Object.entries(models.providers)) {
87
62
  const token = providerConfig.apiKey ?? envVars.ANTHROPIC_API_KEY ?? '';
88
63
  if (token) {
@@ -114,7 +89,6 @@ export function shouldWriteAuthProfiles(version) {
114
89
  const month = Number(match[2]);
115
90
  return year < 2026 || (year === 2026 && month < 9);
116
91
  }
117
- /** Version gate for step 2 of `applyBootstrapConfig`; logs why it skips. */
118
92
  async function authProfilesWanted() {
119
93
  let version;
120
94
  try {
@@ -138,67 +112,68 @@ async function fileExists(p) {
138
112
  return false;
139
113
  }
140
114
  }
141
- /**
142
- * Write `skills` through the same hardened writer as workspace files. Skills
143
- * used to have their own copy of this logic in commands/bootstrap.ts that had
144
- * no path-containment check, so a backend-supplied key like
145
- * '../../.claude/settings.json' escaped the workspace.
146
- */
115
+ // Backend skill paths need the same containment checks as workspace files.
147
116
  async function writeSkills(data, logPrefix) {
148
117
  if (!data.skills || Object.keys(data.skills).length === 0)
149
118
  return;
150
119
  const wrote = await writeWorkspaceFiles(data.skills, getWorkspaceDir());
151
120
  console.log(`${logPrefix} wrote ${wrote} skill files`);
152
121
  }
153
- /**
154
- * Vars without which agent-controller cannot boot: `requireConfig` exits the
155
- * process when any is missing. The VM provisioner writes them; nothing that
156
- * arrives later over the wire may remove them from the VM `.env`.
157
- */
122
+ function getLastAppliedHashPath() {
123
+ return path.join(getConfigDir(), 'last-applied.sha256');
124
+ }
125
+ function canonicalize(value) {
126
+ if (Array.isArray(value))
127
+ return value.map(canonicalize);
128
+ if (!isPlainObject(value))
129
+ return value;
130
+ return Object.fromEntries(Object.keys(value)
131
+ .sort()
132
+ .map((k) => [k, canonicalize(value[k])]));
133
+ }
134
+ /** Hash the payload: gateway 2026.9 rewrites meta/wizard/skills, so disk content is not a stable baseline. */
135
+ export function payloadFingerprint(data) {
136
+ const { openclawConfig, envVars, workspaceFiles, skills, homeFiles } = data;
137
+ const canonical = JSON.stringify(canonicalize({ openclawConfig, envVars, workspaceFiles, skills, homeFiles }));
138
+ return createHash('sha256').update(canonical).digest('hex');
139
+ }
140
+ async function readLastAppliedHash() {
141
+ try {
142
+ return (await fs.readFile(getLastAppliedHashPath(), 'utf8')).trim();
143
+ }
144
+ catch {
145
+ return undefined; // never applied here (or unreadable) → treat as changed
146
+ }
147
+ }
148
+ /** A remote update must preserve the provisioner's boot identity or requireConfig will terminate startup. */
158
149
  const BOOT_CRITICAL_ENV_KEYS = [
159
150
  'AGENT_ID',
160
151
  'AGENT_TOKEN',
161
152
  'CENTRIFUGO_URL',
162
153
  'BACKEND_URL',
163
154
  ];
164
- /**
165
- * FULL apply — only ever legal on a managed install (see `isManagedDeploy`).
166
- * Rewrites files wholesale:
167
- * 1. Write openclaw.json
168
- * 2. Write workspace files + skills
169
- * 3. Write auth-profiles.json (openclaw < 2026.9 only) + settings.json (from envVars)
170
- * 4. MERGE .env (for VM agents) — never a wholesale replace, see step 4 below
171
- * 5. Restart gateway
172
- */
155
+ /** Wholesale writes are allowed only for managed installs; see isManagedDeploy. */
173
156
  export async function applyBootstrapConfig(data) {
174
- // 1. Write openclaw.json
175
157
  if (data.openclawConfig) {
176
158
  await writeOpenclawJson(data.openclawConfig);
177
159
  console.log('[apply-config] openclaw.json updated');
178
160
  }
179
- // 1a. Write workspace files (shared files pushed by backend on update_config)
180
161
  if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
181
162
  const workspaceDir = getWorkspaceDir();
182
163
  const wrote = await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
183
164
  console.log(`[apply-config] wrote ${wrote} workspace files`);
184
165
  }
185
- // 1b. Write skills (same sandbox as workspace files — they share the dir)
186
166
  await writeSkills(data, '[apply-config]');
187
- // 1c. Write home files — platform-managed credentials placed outside the
188
- // workspace (~/.secrets/SECRETS.txt) so knowledge sync never indexes them.
167
+ // Credentials stay outside the workspace so knowledge sync never indexes them.
189
168
  const wroteHomeFiles = await writeHomeFiles(data.homeFiles);
190
169
  if (wroteHomeFiles > 0) {
191
170
  console.log(`[apply-config] wrote ${wroteHomeFiles} home files`);
192
171
  }
193
- // 2. Write auth-profiles.json from openclawConfig.auth.profiles + envVars (API keys)
194
- // — only for openclaw < 2026.9, see writeAuthProfiles.
195
172
  if (data.openclawConfig && data.envVars && (await authProfilesWanted())) {
196
173
  await writeAuthProfiles(data.openclawConfig, data.envVars);
197
174
  console.log('[apply-config] auth-profiles.json updated');
198
175
  }
199
- // 3. Write settings.json (Claude Code CLI config) from envVars
200
176
  if (data.envVars && Object.keys(data.envVars).length > 0) {
201
- // Filter out empty string values (signals "remove this key")
202
177
  const cleanEnvVars = {};
203
178
  for (const [k, v] of Object.entries(data.envVars)) {
204
179
  if (v !== '')
@@ -206,40 +181,19 @@ export async function applyBootstrapConfig(data) {
206
181
  }
207
182
  await writeClaudeEnv(cleanEnvVars);
208
183
  console.log('[apply-config] settings.json updated');
209
- // 4. Update .env for VM agents — a MERGE onto the existing file, never a
210
- // replace.
211
- //
212
- // This used to write `{ ...cleanEnvVars, AGENT_DEPLOY_TYPE }`, i.e. the
213
- // payload's envVars wholesale. But the payload only carries proxy
214
- // credentials (ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL …), so every
215
- // boot-critical var the VM provisioner wrote — AGENT_ID, AGENT_TOKEN,
216
- // CENTRIFUGO_URL, BACKEND_URL, OPENCLAW_GATEWAY_TOKEN, USER_ID,
217
- // WORKSPACE_ID — was deleted on the first successful update_config. The
218
- // next service restart then booted a controller with no identity,
219
- // `requireConfig` exited, and the agent was simply dead.
220
- //
221
- // It shipped that way for months, masked by an EACCES on this file (the
222
- // provisioner left the dir root-owned, so the write always failed). Fixing
223
- // those permissions on 2026-08-08 unmasked it: the first update_config
224
- // afterwards clobbered .env on all 5 running VMs and killed agent
225
- // 87b96f43 overnight (incident 2026-08-09).
184
+ // Payloads carry credentials, not the complete VM environment. Merge to preserve provisioned boot identity.
226
185
  const deployType = getResolvedDeployType();
227
186
  if (deployType === 'vm' || (await fileExists(VM_ENV_PATH))) {
228
187
  const existingVars = await readEnvFile(VM_ENV_PATH);
229
188
  const envOut = { ...existingVars, ...cleanEnvVars };
230
- // An empty payload value means "remove this key" — the same signal
231
- // `cleanEnvVars` strips out for settings.json, applied here to the file
232
- // the key actually lives in. Without this there would be no way to
233
- // 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.
234
190
  for (const [k, v] of Object.entries(data.envVars)) {
235
191
  if (v === '')
236
192
  delete envOut[k];
237
193
  }
238
194
  if (deployType)
239
195
  envOut.AGENT_DEPLOY_TYPE = deployType;
240
- // Belt and braces: whatever the backend sends, a config update must not
241
- // be able to leave the controller unable to boot. If one of these was in
242
- // 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.
243
197
  for (const k of BOOT_CRITICAL_ENV_KEYS) {
244
198
  if (existingVars[k] && !envOut[k]) {
245
199
  console.warn(`[apply-config] refusing to remove boot-critical ${k} from .env — keeping existing value`);
@@ -250,15 +204,23 @@ export async function applyBootstrapConfig(data) {
250
204
  console.log('[apply-config] .env updated');
251
205
  }
252
206
  }
253
- // 5. Restart gateway
254
- //
255
- // Stays best-effort by design — the apply must not depend on it (see CLAUDE.md).
256
- // But a failure here is not cosmetic either: writing the config stops the
257
- // channels for a plugin reload, and this restart is what brings them back. On
258
- // 2026-08-26 the restart failed on two VM agents and only `console.error` knew;
259
- // `update_config` reported success and they sat deaf to Slack for ~50 minutes.
260
- // So it now also emits a domain event, which lands in `agent_log` and is
261
- // queryable by agentId.
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.
209
+ const fingerprint = payloadFingerprint(data);
210
+ const hashPath = getLastAppliedHashPath();
211
+ if ((await readLastAppliedHash()) === fingerprint) {
212
+ console.log(`[apply-config] payload unchanged (sha256 ${fingerprint.slice(0, 12)}); gateway restart skipped`);
213
+ return;
214
+ }
215
+ // Record only after writes succeed; losing the record merely causes another restart.
216
+ try {
217
+ await fs.mkdir(path.dirname(hashPath), { recursive: true });
218
+ await fs.writeFile(hashPath, fingerprint + '\n');
219
+ }
220
+ catch (err) {
221
+ console.warn(`[apply-config] could not record payload sha256: ${toErrorMessage(err)}`);
222
+ }
223
+ // Apply remains successful, but surface restart failures to backend logs because channels may stay down.
262
224
  try {
263
225
  await restartGateway();
264
226
  console.log('[apply-config] gateway restarted');
@@ -266,6 +228,12 @@ export async function applyBootstrapConfig(data) {
266
228
  catch (err) {
267
229
  const message = toErrorMessage(err);
268
230
  console.error('[apply-config] gateway restart failed:', message);
231
+ // Forget the payload, or the next update_config with the same payload would
232
+ // skip the restart and leave the channels down.
233
+ try {
234
+ await fs.rm(hashPath, { force: true });
235
+ }
236
+ catch { }
269
237
  logCollector?.push('gateway_restart_failed', 'error', 'Gateway restart failed after config apply', {
270
238
  error: message,
271
239
  });
@@ -301,7 +269,6 @@ function deepEqual(a, b) {
301
269
  }
302
270
  return false;
303
271
  }
304
- /** Walk dot-path into object; returns undefined if any segment missing. */
305
272
  function getPath(obj, dotPath) {
306
273
  const parts = dotPath.split('.');
307
274
  let cur = obj;
@@ -312,7 +279,6 @@ function getPath(obj, dotPath) {
312
279
  }
313
280
  return cur;
314
281
  }
315
- /** Set dot-path on object, creating intermediate objects as needed. */
316
282
  function setPath(obj, dotPath, value) {
317
283
  const parts = dotPath.split('.');
318
284
  const leaf = parts[parts.length - 1];
@@ -329,18 +295,13 @@ function setPath(obj, dotPath, value) {
329
295
  }
330
296
  cur[leaf] = value;
331
297
  }
332
- /**
333
- * Keys whose values must never reach a log line. Matched case-insensitively
334
- * against the key NAME, so it also catches nested holders like
335
- * `headers.Authorization` and `env.ANTHROPIC_API_KEY`.
336
- */
298
+ /** Match secret-bearing key names, including nested Authorization and provider-key holders. */
337
299
  const SECRET_KEY_RE = /token|secret|key|auth|password|credential/i;
338
300
  function maskSecretValue(v) {
339
301
  if (typeof v !== 'string')
340
302
  return '***';
341
303
  return v.length <= 4 ? '***' : `***${v.slice(-4)}`;
342
304
  }
343
- /** Deep copy of a config value with secret-ish leaves masked, for logging only. */
344
305
  function maskSecrets(value) {
345
306
  if (Array.isArray(value))
346
307
  return value.map(maskSecrets);
@@ -352,27 +313,10 @@ function maskSecrets(value) {
352
313
  }
353
314
  return out;
354
315
  }
355
- /** One-line, secret-masked rendering of a config value for a log message. */
356
316
  function describeForLog(value) {
357
317
  return JSON.stringify(maskSecrets(value));
358
318
  }
359
- /**
360
- * Merge a single allowlisted path from remote into local.
361
- *
362
- * Semantics:
363
- * - If local missing → copy remote (added).
364
- * - If both plain objects → key-by-key merge; new keys added, conflicting
365
- * keys (existing key with different value) logged + skipped (local wins),
366
- * UNLESS `remoteWins` — then the local entry is overwritten with the remote
367
- * one and the change is logged (old → new, secrets masked).
368
- * - Otherwise (scalars / arrays / subtree) → equality check: equal = no-op,
369
- * differ = conflict (local wins).
370
- *
371
- * `remoteWins` is only used for `mcp.servers` in openclaw.json. That section is
372
- * backend-managed (rotated tokens, changed URLs) and local-wins meant an
373
- * updated server entry could never reach a standalone agent. Every other
374
- * mergeable path — and ALL of ~/.claude/settings.json — keeps local-wins.
375
- */
319
+ /** Only openclaw.json mcp.servers may be remote-wins, so rotated backend credentials can reach the agent. */
376
320
  function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
377
321
  const remoteVal = getPath(remote, dotPath);
378
322
  if (remoteVal === undefined)
@@ -383,7 +327,6 @@ function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
383
327
  console.log(`${logPrefix} ADDED ${dotPath}`);
384
328
  return { changed: true, outcome: 'added' };
385
329
  }
386
- // Both objects → key-level merge
387
330
  if (isPlainObject(localVal) && isPlainObject(remoteVal)) {
388
331
  const added = [];
389
332
  const overwritten = [];
@@ -426,7 +369,6 @@ function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
426
369
  }
427
370
  return { changed: true, outcome: 'merged', detail };
428
371
  }
429
- // Leaf or array or mismatched types → equality check
430
372
  if (deepEqual(localVal, remoteVal)) {
431
373
  return { changed: false, outcome: 'equal' };
432
374
  }
@@ -443,13 +385,7 @@ async function readJsonSafe(filePath) {
443
385
  return null;
444
386
  }
445
387
  }
446
- /**
447
- * Write JSON through a tmp file + rename so a reader never sees a half-written
448
- * config. Without an explicit `mode` the existing file's permissions are
449
- * carried over: the tmp is a brand-new inode, so a plain rename would silently
450
- * relax a 0600 file (e.g. a user's ~/.claude/settings.json) to whatever the
451
- * umask allows.
452
- */
388
+ /** Preserve existing mode: tmp+rename creates a new inode and can otherwise relax a secret file to 0644. */
453
389
  async function writeJsonAtomic(filePath, data, mode) {
454
390
  await fs.mkdir(path.dirname(filePath), { recursive: true });
455
391
  let effectiveMode = mode;
@@ -471,59 +407,21 @@ async function writeJsonAtomic(filePath, data, mode) {
471
407
  await fs.rename(tmp, filePath);
472
408
  }
473
409
  /**
474
- * Merge allowlisted mergeable sections from remote payload into existing
475
- * openclaw.json. Used for standalone deployments where users own their own
476
- * config and a full overwrite would destroy customizations.
477
- *
478
- * Rules:
479
- * - Only paths in `MERGEABLE_CONFIG_PATHS` are considered.
480
- * - Missing local value → remote is written.
481
- * - Equal values → no-op.
482
- * - Differing values → conflict, local wins, warn+skip logged.
483
- * - For object paths: conflict detection is per-key inside the dict.
484
- * - **Exception — `mcp.servers` in openclaw.json is REMOTE-wins per key.**
485
- * That section is backend-managed: the URL, transport and bearer token of a
486
- * backend-generated server (e.g. `openclaw-cloud`) change over time, and
487
- * under local-wins an updated entry could never reach a standalone agent —
488
- * a rotated token was skipped forever (observed live 2026-08-02). Every
489
- * server NAME present in the payload is overwritten; names that exist only
490
- * locally are left untouched.
491
- * LIMITATION — no deletions. A server removed in the backend stays in the
492
- * local openclaw.json: the payload cannot distinguish "removed upstream"
493
- * from "never managed here", and dropping local-only entries would delete
494
- * the user's own servers. Removal on standalone is a manual edit.
495
- * - Restarts the gateway **iff** the `mcp.servers` subtree actually changed.
496
- * This is a FALLBACK, not the primary delivery mechanism: openclaw
497
- * does self-reload this section (verified live 2026-08-03 — the gateway
498
- * logged `[reload] config hot reload applied (mcp.servers.<name>.url,
499
- * mcp.servers.<name>.headers)` on an overwrite, with no restart). The
500
- * restart covers builds/paths where that self-reload does not fire, and
501
- * mirrors what applyBootstrapConfig does on managed installs. It is
502
- * best-effort: a failure is logged and does not fail the apply — on a
503
- * launchd box where `openclaw` is not on the service PATH it never runs at
504
- * all, and the merge still lands.
505
- * - Settings.json (~/.claude/settings.json) keeps LOCAL-wins for
506
- * `mcp.servers` ONLY — apiKeyHelper/permissions/env/etc untouched. `env` is
507
- * never written here: it would redirect the user's own Claude Code sessions
508
- * to the platform proxy (see MERGEABLE_SETTINGS_PATHS).
509
- * - 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.
510
413
  */
511
414
  export async function applyMergeableConfig(data) {
512
415
  const result = { changed: false, outcomes: [] };
513
- // Surface the intentional MVP gap: workspace files are skipped on standalone.
514
416
  if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
515
417
  console.log('[config-merge] workspaceFiles not applied on standalone — intentional MVP limitation');
516
418
  }
517
- // Same for home files: writing platform credentials into a third-party
518
- // user's HOME is exactly the class of mistake this branch exists to prevent.
519
- // `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.
520
420
  if (data.homeFiles && Object.keys(data.homeFiles).length > 0) {
521
421
  console.log('[config-merge] homeFiles not applied on standalone — managed installs only');
522
422
  }
523
- // Skills ARE applied: they live under the platform-owned .agents/skills/
524
- // namespace, and the CLI bootstrap wrote them on standalone all along.
423
+ // Skills remain writable in the platform-owned .agents/skills namespace.
525
424
  await writeSkills(data, '[config-merge] skills:');
526
- // --- openclaw.json ---
527
425
  let mcpServersChanged = false;
528
426
  if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
529
427
  const configPath = getOpenclawJsonPath();
@@ -531,9 +429,7 @@ export async function applyMergeableConfig(data) {
531
429
  const local = existing ?? {};
532
430
  const isFreshFile = existing === null;
533
431
  const remoteConfig = data.openclawConfig;
534
- // Snapshot the section BEFORE any mutation (the legacy migration below can
535
- // move entries into it too) so the restart decision reflects what the
536
- // running gateway would actually see change.
432
+ // Snapshot before legacy migration too, so the restart covers every change visible to the gateway.
537
433
  const mcpServersBefore = structuredClone(getPath(local, MCP_SERVERS_PATH));
538
434
  // One-shot migration of the local file: lift any pre-existing flat
539
435
  // `mcpServers` into `mcp.servers` so the OpenClaw CLI's strict schema
@@ -558,11 +454,7 @@ export async function applyMergeableConfig(data) {
558
454
  console.log('[config-merge] openclaw.json unchanged');
559
455
  }
560
456
  }
561
- // --- ~/.claude/settings.json ---
562
- // Only merge if the payload carries MCP servers. `data.envVars` is
563
- // deliberately NOT projected into `env` here — see MERGEABLE_SETTINGS_PATHS.
564
- // Canonical shape in Claude Code's settings.json is `mcp.servers` (nested);
565
- // the backend always sends that shape.
457
+ // Never project envVars into standalone Claude settings; see MERGEABLE_SETTINGS_PATHS.
566
458
  const settingsLikeRemote = {};
567
459
  if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
568
460
  const oc = data.openclawConfig;
@@ -578,14 +470,7 @@ export async function applyMergeableConfig(data) {
578
470
  // synthesize Claude CLI settings on a machine that doesn't use Claude CLI.
579
471
  if (existing) {
580
472
  const local = existing;
581
- // One-shot migration: if settings.json has the legacy flat `mcpServers`
582
- // key, lift its entries into `mcp.servers` (local wins on conflict) and
583
- // remove the flat key. Survives across runs (idempotent).
584
- //
585
- // `changed` is per-FILE on purpose. It used to write into the shared
586
- // `result.changed`, which made "did settings.json change?" true whenever
587
- // openclaw.json had changed earlier — settings.json got rewritten even
588
- // 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.
589
474
  let changed = migrateLegacyMcpServers(local, '[settings-merge]');
590
475
  for (const p of MERGEABLE_SETTINGS_PATHS) {
591
476
  const r = mergePath(local, settingsLikeRemote, p, '[settings-merge]');
@@ -606,12 +491,8 @@ export async function applyMergeableConfig(data) {
606
491
  console.log('[settings-merge] ~/.claude/settings.json absent — skipping (standalone user owns it)');
607
492
  }
608
493
  }
609
- // Fallback delivery for `mcp.servers`. Openclaw DOES self-reload
610
- // this section (verified live 2026-08-03), so on a current runtime this
611
- // restart is belt-and-braces; it exists for builds where the self-reload does
612
- // not cover `mcp.servers`, and mirrors applyBootstrapConfig on managed. Fires
613
- // only when the section actually moved, so a no-op payload never bounces a
614
- // 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.
615
496
  if (mcpServersChanged) {
616
497
  console.log('[config-merge] mcp.servers changed — restarting gateway');
617
498
  try {
@@ -626,16 +507,7 @@ export async function applyMergeableConfig(data) {
626
507
  }
627
508
  return result;
628
509
  }
629
- /**
630
- * The one owner of "fetch bootstrap and apply it". Every caller — the
631
- * `update_config` WS handler, the `bootstrap` CLI, the opt-in startup refresh —
632
- * goes through here so the deploy-type decision cannot drift between them.
633
- *
634
- * Managed installs ('vm'/'k8s') are provisioned end to end by the platform and
635
- * get the full apply. Anything else — 'standalone', 'external', or a payload
636
- * from an older backend that omits `deploymentType` — is a third-party machine
637
- * and gets the scoped, additive merge only. Never rewrite files we don't own.
638
- */
510
+ /** One deploy-type decision serves WS, CLI and startup; unknown installs must retain scoped ownership. */
639
511
  export async function fetchAndApplyConfig(api, agentId) {
640
512
  const data = await api.agentBootstrap(agentId);
641
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
  }