@openclaw-cloud/agent-controller 3.0.0-beta.2 → 3.0.0-beta.20
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 +56 -20
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +12 -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 +87 -119
- package/dist/index.js.map +1 -1
- package/dist/lockfile.js +2 -1
- package/dist/lockfile.js.map +1 -1
- 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 +11 -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 +295 -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,38 @@ 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 { VM_ENV_PATH } from '../config-file.js';
|
|
8
|
+
import { VM_ENV_PATH, readEnvFile, writeEnvFile } from '../config-file.js';
|
|
8
9
|
import { config } from '../config.js';
|
|
9
10
|
import { getWorkspaceDir } from '../workspace.js';
|
|
10
|
-
import { MERGEABLE_CONFIG_PATHS, MERGEABLE_SETTINGS_PATHS } from './config-merge-paths.js';
|
|
11
|
+
import { MCP_SERVERS_PATH, MERGEABLE_CONFIG_PATHS, MERGEABLE_SETTINGS_PATHS, } from './config-merge-paths.js';
|
|
12
|
+
import { getResolvedDeployType, isManagedDeploy, setResolvedDeployType } from './deploy-type.js';
|
|
13
|
+
import { migrateLegacyMcpServers } from './legacy-mcp-servers.js';
|
|
14
|
+
import { toErrorMessage } from './response.js';
|
|
11
15
|
function getOpenclawDir() {
|
|
12
16
|
return config.stateDir;
|
|
13
17
|
}
|
|
14
18
|
function getAuthProfilesPath() {
|
|
15
19
|
return path.join(getOpenclawDir(), 'agents', 'main', 'agent', 'auth-profiles.json');
|
|
16
20
|
}
|
|
21
|
+
/** Canonical openclaw.json location — `<stateDir>/openclaw.json`. */
|
|
22
|
+
export function getOpenclawJsonPath() {
|
|
23
|
+
return path.join(getOpenclawDir(), 'openclaw.json');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The ONE writer for openclaw.json — atomic (tmp + rename) and mode 0600.
|
|
27
|
+
*
|
|
28
|
+
* Both properties are load-bearing and used to be split across three
|
|
29
|
+
* independent write sites: the full apply wrote 0600 but non-atomically (a
|
|
30
|
+
* reader could see a truncated file), the scoped merge wrote atomically but
|
|
31
|
+
* with no mode (tmp + rename RESETS a pre-existing 0600 file to 0644, leaking
|
|
32
|
+
* `models.providers[*].apiKey`), and the startup memory-MCP injection did
|
|
33
|
+
* neither. Everything goes through here now.
|
|
34
|
+
*/
|
|
35
|
+
export async function writeOpenclawJson(data) {
|
|
36
|
+
await writeJsonAtomic(getOpenclawJsonPath(), data, 0o600);
|
|
37
|
+
}
|
|
17
38
|
/**
|
|
18
39
|
* Generate auth-profiles.json from openclaw.json auth config + envVars.
|
|
19
40
|
* openclaw.json contains profile declarations (provider, mode) without secrets.
|
|
@@ -76,26 +97,56 @@ async function fileExists(p) {
|
|
|
76
97
|
}
|
|
77
98
|
}
|
|
78
99
|
/**
|
|
79
|
-
*
|
|
100
|
+
* Write `skills` through the same hardened writer as workspace files. Skills
|
|
101
|
+
* used to have their own copy of this logic in commands/bootstrap.ts that had
|
|
102
|
+
* no path-containment check, so a backend-supplied key like
|
|
103
|
+
* '../../.claude/settings.json' escaped the workspace.
|
|
104
|
+
*/
|
|
105
|
+
async function writeSkills(data, logPrefix) {
|
|
106
|
+
if (!data.skills || Object.keys(data.skills).length === 0)
|
|
107
|
+
return;
|
|
108
|
+
const wrote = await writeWorkspaceFiles(data.skills, getWorkspaceDir());
|
|
109
|
+
console.log(`${logPrefix} wrote ${wrote} skill files`);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Vars without which agent-controller cannot boot: `requireConfig` exits the
|
|
113
|
+
* process when any is missing. The VM provisioner writes them; nothing that
|
|
114
|
+
* arrives later over the wire may remove them from the VM `.env`.
|
|
115
|
+
*/
|
|
116
|
+
const BOOT_CRITICAL_ENV_KEYS = [
|
|
117
|
+
'AGENT_ID',
|
|
118
|
+
'AGENT_TOKEN',
|
|
119
|
+
'CENTRIFUGO_URL',
|
|
120
|
+
'BACKEND_URL',
|
|
121
|
+
];
|
|
122
|
+
/**
|
|
123
|
+
* FULL apply — only ever legal on a managed install (see `isManagedDeploy`).
|
|
124
|
+
* Rewrites files wholesale:
|
|
80
125
|
* 1. Write openclaw.json
|
|
81
|
-
* 2. Write
|
|
82
|
-
* 3. Write .
|
|
83
|
-
* 4.
|
|
126
|
+
* 2. Write workspace files + skills
|
|
127
|
+
* 3. Write auth-profiles.json + settings.json (from envVars)
|
|
128
|
+
* 4. MERGE .env (for VM agents) — never a wholesale replace, see step 4 below
|
|
129
|
+
* 5. Restart gateway
|
|
84
130
|
*/
|
|
85
131
|
export async function applyBootstrapConfig(data) {
|
|
86
|
-
const openclawDir = getOpenclawDir();
|
|
87
132
|
// 1. Write openclaw.json
|
|
88
133
|
if (data.openclawConfig) {
|
|
89
|
-
|
|
90
|
-
await fs.mkdir(openclawDir, { recursive: true });
|
|
91
|
-
await fs.writeFile(configPath, JSON.stringify(data.openclawConfig, null, 2) + '\n');
|
|
134
|
+
await writeOpenclawJson(data.openclawConfig);
|
|
92
135
|
console.log('[apply-config] openclaw.json updated');
|
|
93
136
|
}
|
|
94
137
|
// 1a. Write workspace files (shared files pushed by backend on update_config)
|
|
95
138
|
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
96
139
|
const workspaceDir = getWorkspaceDir();
|
|
97
|
-
await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
98
|
-
console.log(`[apply-config] wrote ${
|
|
140
|
+
const wrote = await writeWorkspaceFiles(data.workspaceFiles, workspaceDir);
|
|
141
|
+
console.log(`[apply-config] wrote ${wrote} workspace files`);
|
|
142
|
+
}
|
|
143
|
+
// 1b. Write skills (same sandbox as workspace files — they share the dir)
|
|
144
|
+
await writeSkills(data, '[apply-config]');
|
|
145
|
+
// 1c. Write home files — platform-managed credentials placed outside the
|
|
146
|
+
// workspace (~/.secrets/SECRETS.txt) so knowledge sync never indexes them.
|
|
147
|
+
const wroteHomeFiles = await writeHomeFiles(data.homeFiles);
|
|
148
|
+
if (wroteHomeFiles > 0) {
|
|
149
|
+
console.log(`[apply-config] wrote ${wroteHomeFiles} home files`);
|
|
99
150
|
}
|
|
100
151
|
// 2. Write auth-profiles.json from openclawConfig.auth.profiles + envVars (API keys)
|
|
101
152
|
if (data.openclawConfig && data.envVars) {
|
|
@@ -112,23 +163,57 @@ export async function applyBootstrapConfig(data) {
|
|
|
112
163
|
}
|
|
113
164
|
await writeClaudeEnv(cleanEnvVars);
|
|
114
165
|
console.log('[apply-config] settings.json updated');
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
166
|
+
// 4. Update .env for VM agents — a MERGE onto the existing file, never a
|
|
167
|
+
// replace.
|
|
168
|
+
//
|
|
169
|
+
// This used to write `{ ...cleanEnvVars, AGENT_DEPLOY_TYPE }`, i.e. the
|
|
170
|
+
// payload's envVars wholesale. But the payload only carries proxy
|
|
171
|
+
// credentials (ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL …), so every
|
|
172
|
+
// boot-critical var the VM provisioner wrote — AGENT_ID, AGENT_TOKEN,
|
|
173
|
+
// CENTRIFUGO_URL, BACKEND_URL, OPENCLAW_GATEWAY_TOKEN, USER_ID,
|
|
174
|
+
// WORKSPACE_ID — was deleted on the first successful update_config. The
|
|
175
|
+
// next service restart then booted a controller with no identity,
|
|
176
|
+
// `requireConfig` exited, and the agent was simply dead.
|
|
177
|
+
//
|
|
178
|
+
// It shipped that way for months, masked by an EACCES on this file (the
|
|
179
|
+
// provisioner left the dir root-owned, so the write always failed). Fixing
|
|
180
|
+
// those permissions on 2026-08-08 unmasked it: the first update_config
|
|
181
|
+
// afterwards clobbered .env on all 5 running VMs and killed agent
|
|
182
|
+
// 87b96f43 overnight (incident 2026-08-09).
|
|
183
|
+
const deployType = getResolvedDeployType();
|
|
184
|
+
if (deployType === 'vm' || (await fileExists(VM_ENV_PATH))) {
|
|
185
|
+
const existingVars = await readEnvFile(VM_ENV_PATH);
|
|
186
|
+
const envOut = { ...existingVars, ...cleanEnvVars };
|
|
187
|
+
// An empty payload value means "remove this key" — the same signal
|
|
188
|
+
// `cleanEnvVars` strips out for settings.json, applied here to the file
|
|
189
|
+
// the key actually lives in. Without this there would be no way to
|
|
190
|
+
// retire a rotated credential from a VM once merging began.
|
|
191
|
+
for (const [k, v] of Object.entries(data.envVars)) {
|
|
192
|
+
if (v === '')
|
|
193
|
+
delete envOut[k];
|
|
194
|
+
}
|
|
195
|
+
if (deployType)
|
|
196
|
+
envOut.AGENT_DEPLOY_TYPE = deployType;
|
|
197
|
+
// Belt and braces: whatever the backend sends, a config update must not
|
|
198
|
+
// be able to leave the controller unable to boot. If one of these was in
|
|
199
|
+
// the file and the merge would drop or blank it, keep what was there.
|
|
200
|
+
for (const k of BOOT_CRITICAL_ENV_KEYS) {
|
|
201
|
+
if (existingVars[k] && !envOut[k]) {
|
|
202
|
+
console.warn(`[apply-config] refusing to remove boot-critical ${k} from .env — keeping existing value`);
|
|
203
|
+
envOut[k] = existingVars[k];
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
await writeEnvFile(VM_ENV_PATH, envOut);
|
|
122
207
|
console.log('[apply-config] .env updated');
|
|
123
208
|
}
|
|
124
209
|
}
|
|
125
|
-
//
|
|
210
|
+
// 5. Restart gateway
|
|
126
211
|
try {
|
|
127
212
|
await restartGateway();
|
|
128
213
|
console.log('[apply-config] gateway restarted');
|
|
129
214
|
}
|
|
130
215
|
catch (err) {
|
|
131
|
-
console.error('[apply-config] gateway restart failed:', err
|
|
216
|
+
console.error('[apply-config] gateway restart failed:', toErrorMessage(err));
|
|
132
217
|
}
|
|
133
218
|
}
|
|
134
219
|
function isPlainObject(v) {
|
|
@@ -175,14 +260,46 @@ function getPath(obj, dotPath) {
|
|
|
175
260
|
/** Set dot-path on object, creating intermediate objects as needed. */
|
|
176
261
|
function setPath(obj, dotPath, value) {
|
|
177
262
|
const parts = dotPath.split('.');
|
|
263
|
+
const leaf = parts[parts.length - 1];
|
|
264
|
+
if (leaf === undefined)
|
|
265
|
+
return;
|
|
178
266
|
let cur = obj;
|
|
179
267
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
180
268
|
const key = parts[i];
|
|
269
|
+
if (key === undefined)
|
|
270
|
+
continue;
|
|
181
271
|
if (!isPlainObject(cur[key]))
|
|
182
272
|
cur[key] = {};
|
|
183
273
|
cur = cur[key];
|
|
184
274
|
}
|
|
185
|
-
cur[
|
|
275
|
+
cur[leaf] = value;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Keys whose values must never reach a log line. Matched case-insensitively
|
|
279
|
+
* against the key NAME, so it also catches nested holders like
|
|
280
|
+
* `headers.Authorization` and `env.ANTHROPIC_API_KEY`.
|
|
281
|
+
*/
|
|
282
|
+
const SECRET_KEY_RE = /token|secret|key|auth|password|credential/i;
|
|
283
|
+
function maskSecretValue(v) {
|
|
284
|
+
if (typeof v !== 'string')
|
|
285
|
+
return '***';
|
|
286
|
+
return v.length <= 4 ? '***' : `***${v.slice(-4)}`;
|
|
287
|
+
}
|
|
288
|
+
/** Deep copy of a config value with secret-ish leaves masked, for logging only. */
|
|
289
|
+
function maskSecrets(value) {
|
|
290
|
+
if (Array.isArray(value))
|
|
291
|
+
return value.map(maskSecrets);
|
|
292
|
+
if (!isPlainObject(value))
|
|
293
|
+
return value;
|
|
294
|
+
const out = {};
|
|
295
|
+
for (const [k, v] of Object.entries(value)) {
|
|
296
|
+
out[k] = SECRET_KEY_RE.test(k) ? maskSecretValue(v) : maskSecrets(v);
|
|
297
|
+
}
|
|
298
|
+
return out;
|
|
299
|
+
}
|
|
300
|
+
/** One-line, secret-masked rendering of a config value for a log message. */
|
|
301
|
+
function describeForLog(value) {
|
|
302
|
+
return JSON.stringify(maskSecrets(value));
|
|
186
303
|
}
|
|
187
304
|
/**
|
|
188
305
|
* Merge a single allowlisted path from remote into local.
|
|
@@ -190,11 +307,18 @@ function setPath(obj, dotPath, value) {
|
|
|
190
307
|
* Semantics:
|
|
191
308
|
* - If local missing → copy remote (added).
|
|
192
309
|
* - If both plain objects → key-by-key merge; new keys added, conflicting
|
|
193
|
-
* keys (existing key with different value) logged + skipped (local wins)
|
|
310
|
+
* keys (existing key with different value) logged + skipped (local wins),
|
|
311
|
+
* UNLESS `remoteWins` — then the local entry is overwritten with the remote
|
|
312
|
+
* one and the change is logged (old → new, secrets masked).
|
|
194
313
|
* - Otherwise (scalars / arrays / subtree) → equality check: equal = no-op,
|
|
195
314
|
* differ = conflict (local wins).
|
|
315
|
+
*
|
|
316
|
+
* `remoteWins` is only used for `mcp.servers` in openclaw.json. That section is
|
|
317
|
+
* backend-managed (rotated tokens, changed URLs) and local-wins meant an
|
|
318
|
+
* updated server entry could never reach a standalone agent. Every other
|
|
319
|
+
* mergeable path — and ALL of ~/.claude/settings.json — keeps local-wins.
|
|
196
320
|
*/
|
|
197
|
-
function mergePath(local, remote, dotPath, logPrefix) {
|
|
321
|
+
function mergePath(local, remote, dotPath, logPrefix, remoteWins = false) {
|
|
198
322
|
const remoteVal = getPath(remote, dotPath);
|
|
199
323
|
if (remoteVal === undefined)
|
|
200
324
|
return { changed: false, outcome: 'equal' };
|
|
@@ -206,28 +330,46 @@ function mergePath(local, remote, dotPath, logPrefix) {
|
|
|
206
330
|
}
|
|
207
331
|
// Both objects → key-level merge
|
|
208
332
|
if (isPlainObject(localVal) && isPlainObject(remoteVal)) {
|
|
209
|
-
|
|
333
|
+
const added = [];
|
|
334
|
+
const overwritten = [];
|
|
210
335
|
const conflicts = [];
|
|
211
336
|
for (const [k, v] of Object.entries(remoteVal)) {
|
|
212
337
|
if (!(k in localVal)) {
|
|
213
338
|
localVal[k] = v;
|
|
214
|
-
|
|
339
|
+
added.push(k);
|
|
215
340
|
console.log(`${logPrefix} ADDED ${dotPath}.${k}`);
|
|
216
341
|
}
|
|
217
342
|
else if (!deepEqual(localVal[k], v)) {
|
|
218
|
-
|
|
219
|
-
|
|
343
|
+
if (remoteWins) {
|
|
344
|
+
console.log(`${logPrefix} OVERWROTE ${dotPath}.${k}: ` +
|
|
345
|
+
`${describeForLog(localVal[k])} → ${describeForLog(v)}`);
|
|
346
|
+
localVal[k] = v;
|
|
347
|
+
overwritten.push(k);
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
conflicts.push(k);
|
|
351
|
+
console.warn(`[config-merge] SKIPPED conflict at ${dotPath}.${k}: keeping local value`);
|
|
352
|
+
}
|
|
220
353
|
}
|
|
221
354
|
}
|
|
222
|
-
|
|
223
|
-
|
|
355
|
+
// Keys present only locally are never removed — the backend payload is not
|
|
356
|
+
// authoritative about deletions. Documented in applyMergeableConfig.
|
|
357
|
+
const changed = added.length > 0 || overwritten.length > 0;
|
|
358
|
+
const detailParts = [];
|
|
359
|
+
if (overwritten.length > 0)
|
|
360
|
+
detailParts.push(`overwritten:${overwritten.join(',')}`);
|
|
361
|
+
if (conflicts.length > 0)
|
|
362
|
+
detailParts.push(`conflicts:${conflicts.join(',')}`);
|
|
363
|
+
const detail = detailParts.length > 0 ? detailParts.join(' ') : undefined;
|
|
364
|
+
if (!changed) {
|
|
365
|
+
return conflicts.length > 0
|
|
366
|
+
? { changed: false, outcome: 'conflict', detail: conflicts.join(',') }
|
|
367
|
+
: { changed: false, outcome: 'equal' };
|
|
224
368
|
}
|
|
225
|
-
if (
|
|
226
|
-
return { changed: true, outcome: '
|
|
369
|
+
if (overwritten.length > 0 && added.length === 0) {
|
|
370
|
+
return { changed: true, outcome: 'overwritten', detail };
|
|
227
371
|
}
|
|
228
|
-
|
|
229
|
-
return { changed: true, outcome: 'merged' };
|
|
230
|
-
return { changed: false, outcome: 'equal' };
|
|
372
|
+
return { changed: true, outcome: 'merged', detail };
|
|
231
373
|
}
|
|
232
374
|
// Leaf or array or mismatched types → equality check
|
|
233
375
|
if (deepEqual(localVal, remoteVal)) {
|
|
@@ -246,11 +388,31 @@ async function readJsonSafe(filePath) {
|
|
|
246
388
|
return null;
|
|
247
389
|
}
|
|
248
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* Write JSON through a tmp file + rename so a reader never sees a half-written
|
|
393
|
+
* config. Without an explicit `mode` the existing file's permissions are
|
|
394
|
+
* carried over: the tmp is a brand-new inode, so a plain rename would silently
|
|
395
|
+
* relax a 0600 file (e.g. a user's ~/.claude/settings.json) to whatever the
|
|
396
|
+
* umask allows.
|
|
397
|
+
*/
|
|
249
398
|
async function writeJsonAtomic(filePath, data, mode) {
|
|
250
399
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
400
|
+
let effectiveMode = mode;
|
|
401
|
+
if (effectiveMode === undefined) {
|
|
402
|
+
try {
|
|
403
|
+
effectiveMode = (await fs.stat(filePath)).mode & 0o777;
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// No existing file (or a mocked fs) — let the umask decide.
|
|
407
|
+
}
|
|
408
|
+
}
|
|
251
409
|
const tmp = filePath + '.tmp';
|
|
252
|
-
const opts =
|
|
410
|
+
const opts = effectiveMode !== undefined ? { mode: effectiveMode } : undefined;
|
|
253
411
|
await fs.writeFile(tmp, JSON.stringify(data, null, 2) + '\n', opts);
|
|
412
|
+
// `mode` on writeFile only applies when the file is CREATED — a tmp left
|
|
413
|
+
// behind by a crashed run would keep its old, looser mode.
|
|
414
|
+
if (effectiveMode !== undefined)
|
|
415
|
+
await fs.chmod(tmp, effectiveMode);
|
|
254
416
|
await fs.rename(tmp, filePath);
|
|
255
417
|
}
|
|
256
418
|
/**
|
|
@@ -263,11 +425,32 @@ async function writeJsonAtomic(filePath, data, mode) {
|
|
|
263
425
|
* - Missing local value → remote is written.
|
|
264
426
|
* - Equal values → no-op.
|
|
265
427
|
* - Differing values → conflict, local wins, warn+skip logged.
|
|
266
|
-
* - For
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
428
|
+
* - For object paths: conflict detection is per-key inside the dict.
|
|
429
|
+
* - **Exception — `mcp.servers` in openclaw.json is REMOTE-wins per key.**
|
|
430
|
+
* That section is backend-managed: the URL, transport and bearer token of a
|
|
431
|
+
* backend-generated server (e.g. `openclaw-cloud`) change over time, and
|
|
432
|
+
* under local-wins an updated entry could never reach a standalone agent —
|
|
433
|
+
* a rotated token was skipped forever (observed live 2026-08-02). Every
|
|
434
|
+
* server NAME present in the payload is overwritten; names that exist only
|
|
435
|
+
* locally are left untouched.
|
|
436
|
+
* LIMITATION — no deletions. A server removed in the backend stays in the
|
|
437
|
+
* local openclaw.json: the payload cannot distinguish "removed upstream"
|
|
438
|
+
* from "never managed here", and dropping local-only entries would delete
|
|
439
|
+
* the user's own servers. Removal on standalone is a manual edit.
|
|
440
|
+
* - Restarts the gateway **iff** the `mcp.servers` subtree actually changed.
|
|
441
|
+
* This is a FALLBACK, not the primary delivery mechanism: openclaw 2026.7.1
|
|
442
|
+
* does self-reload this section (verified live 2026-08-03 — the gateway
|
|
443
|
+
* logged `[reload] config hot reload applied (mcp.servers.<name>.url,
|
|
444
|
+
* mcp.servers.<name>.headers)` on an overwrite, with no restart). The
|
|
445
|
+
* restart covers builds/paths where that self-reload does not fire, and
|
|
446
|
+
* mirrors what applyBootstrapConfig does on managed installs. It is
|
|
447
|
+
* best-effort: a failure is logged and does not fail the apply — on a
|
|
448
|
+
* launchd box where `openclaw` is not on the service PATH it never runs at
|
|
449
|
+
* all, and the merge still lands.
|
|
450
|
+
* - Settings.json (~/.claude/settings.json) keeps LOCAL-wins for
|
|
451
|
+
* `mcp.servers` ONLY — apiKeyHelper/permissions/env/etc untouched. `env` is
|
|
452
|
+
* never written here: it would redirect the user's own Claude Code sessions
|
|
453
|
+
* to the platform proxy (see MERGEABLE_SETTINGS_PATHS).
|
|
271
454
|
* - auth-profiles.json and .env are NOT touched on standalone.
|
|
272
455
|
*/
|
|
273
456
|
export async function applyMergeableConfig(data) {
|
|
@@ -276,47 +459,40 @@ export async function applyMergeableConfig(data) {
|
|
|
276
459
|
if (data.workspaceFiles && Object.keys(data.workspaceFiles).length > 0) {
|
|
277
460
|
console.log('[config-merge] workspaceFiles not applied on standalone — intentional MVP limitation');
|
|
278
461
|
}
|
|
462
|
+
// Same for home files: writing platform credentials into a third-party
|
|
463
|
+
// user's HOME is exactly the class of mistake this branch exists to prevent.
|
|
464
|
+
// `writeHomeFiles` enforces that itself; this line just makes the skip visible.
|
|
465
|
+
if (data.homeFiles && Object.keys(data.homeFiles).length > 0) {
|
|
466
|
+
console.log('[config-merge] homeFiles not applied on standalone — managed installs only');
|
|
467
|
+
}
|
|
468
|
+
// Skills ARE applied: they live under the platform-owned .agents/skills/
|
|
469
|
+
// namespace, and the CLI bootstrap wrote them on standalone all along.
|
|
470
|
+
await writeSkills(data, '[config-merge] skills:');
|
|
279
471
|
// --- openclaw.json ---
|
|
472
|
+
let mcpServersChanged = false;
|
|
280
473
|
if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
|
|
281
|
-
const
|
|
282
|
-
const configPath = path.join(openclawDir, 'openclaw.json');
|
|
474
|
+
const configPath = getOpenclawJsonPath();
|
|
283
475
|
const existing = await readJsonSafe(configPath);
|
|
284
476
|
const local = existing ?? {};
|
|
285
477
|
const isFreshFile = existing === null;
|
|
286
478
|
const remoteConfig = data.openclawConfig;
|
|
479
|
+
// Snapshot the section BEFORE any mutation (the legacy migration below can
|
|
480
|
+
// move entries into it too) so the restart decision reflects what the
|
|
481
|
+
// running gateway would actually see change.
|
|
482
|
+
const mcpServersBefore = structuredClone(getPath(local, MCP_SERVERS_PATH));
|
|
287
483
|
// One-shot migration of the local file: lift any pre-existing flat
|
|
288
484
|
// `mcpServers` into `mcp.servers` so the OpenClaw CLI's strict schema
|
|
289
485
|
// 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
|
-
}
|
|
486
|
+
let changed = migrateLegacyMcpServers(local, '[config-merge]');
|
|
312
487
|
for (const p of MERGEABLE_CONFIG_PATHS) {
|
|
313
|
-
const r = mergePath(local, remoteConfig, p, '[config-merge]');
|
|
488
|
+
const r = mergePath(local, remoteConfig, p, '[config-merge]', p === MCP_SERVERS_PATH);
|
|
314
489
|
result.outcomes.push({ path: p, outcome: r.outcome, detail: r.detail });
|
|
315
490
|
if (r.changed)
|
|
316
491
|
changed = true;
|
|
317
492
|
}
|
|
493
|
+
mcpServersChanged = !deepEqual(mcpServersBefore, getPath(local, MCP_SERVERS_PATH));
|
|
318
494
|
if (changed || (isFreshFile && Object.keys(local).length > 0)) {
|
|
319
|
-
await
|
|
495
|
+
await writeOpenclawJson(local);
|
|
320
496
|
result.changed = true;
|
|
321
497
|
console.log(`[config-merge] openclaw.json ${isFreshFile ? 'created' : 'updated'} at ${configPath}`);
|
|
322
498
|
}
|
|
@@ -328,23 +504,16 @@ export async function applyMergeableConfig(data) {
|
|
|
328
504
|
}
|
|
329
505
|
}
|
|
330
506
|
// --- ~/.claude/settings.json ---
|
|
331
|
-
// Only merge if
|
|
507
|
+
// Only merge if the payload carries MCP servers. `data.envVars` is
|
|
508
|
+
// deliberately NOT projected into `env` here — see MERGEABLE_SETTINGS_PATHS.
|
|
332
509
|
// Canonical shape in Claude Code's settings.json is `mcp.servers` (nested);
|
|
333
510
|
// the backend always sends that shape.
|
|
334
511
|
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
512
|
if (data.openclawConfig && isPlainObject(data.openclawConfig)) {
|
|
344
513
|
const oc = data.openclawConfig;
|
|
345
514
|
const nestedServers = isPlainObject(oc.mcp) ? oc.mcp.servers : undefined;
|
|
346
515
|
if (isPlainObject(nestedServers)) {
|
|
347
|
-
setPath(settingsLikeRemote,
|
|
516
|
+
setPath(settingsLikeRemote, MCP_SERVERS_PATH, nestedServers);
|
|
348
517
|
}
|
|
349
518
|
}
|
|
350
519
|
if (Object.keys(settingsLikeRemote).length > 0) {
|
|
@@ -357,35 +526,19 @@ export async function applyMergeableConfig(data) {
|
|
|
357
526
|
// One-shot migration: if settings.json has the legacy flat `mcpServers`
|
|
358
527
|
// key, lift its entries into `mcp.servers` (local wins on conflict) and
|
|
359
528
|
// 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;
|
|
529
|
+
//
|
|
530
|
+
// `changed` is per-FILE on purpose. It used to write into the shared
|
|
531
|
+
// `result.changed`, which made "did settings.json change?" true whenever
|
|
532
|
+
// openclaw.json had changed earlier — settings.json got rewritten even
|
|
533
|
+
// when every one of its own merges was a no-op.
|
|
534
|
+
let changed = migrateLegacyMcpServers(local, '[settings-merge]');
|
|
382
535
|
for (const p of MERGEABLE_SETTINGS_PATHS) {
|
|
383
536
|
const r = mergePath(local, settingsLikeRemote, p, '[settings-merge]');
|
|
384
537
|
result.outcomes.push({ path: `settings:${p}`, outcome: r.outcome, detail: r.detail });
|
|
385
538
|
if (r.changed)
|
|
386
539
|
changed = true;
|
|
387
540
|
}
|
|
388
|
-
if (changed
|
|
541
|
+
if (changed) {
|
|
389
542
|
await writeJsonAtomic(settingsPath, local);
|
|
390
543
|
result.changed = true;
|
|
391
544
|
console.log(`[settings-merge] settings.json updated at ${settingsPath}`);
|
|
@@ -398,6 +551,48 @@ export async function applyMergeableConfig(data) {
|
|
|
398
551
|
console.log('[settings-merge] ~/.claude/settings.json absent — skipping (standalone user owns it)');
|
|
399
552
|
}
|
|
400
553
|
}
|
|
554
|
+
// Fallback delivery for `mcp.servers`. Openclaw 2026.7.1 DOES self-reload
|
|
555
|
+
// this section (verified live 2026-08-03), so on a current runtime this
|
|
556
|
+
// restart is belt-and-braces; it exists for builds where the self-reload does
|
|
557
|
+
// not cover `mcp.servers`, and mirrors applyBootstrapConfig on managed. Fires
|
|
558
|
+
// only when the section actually moved, so a no-op payload never bounces a
|
|
559
|
+
// busy gateway (this gateway also hosts the running agent).
|
|
560
|
+
if (mcpServersChanged) {
|
|
561
|
+
console.log('[config-merge] mcp.servers changed — restarting gateway');
|
|
562
|
+
try {
|
|
563
|
+
await restartGateway();
|
|
564
|
+
console.log('[config-merge] gateway restarted');
|
|
565
|
+
}
|
|
566
|
+
catch (err) {
|
|
567
|
+
// Best-effort: the config on disk is already correct, and failing the
|
|
568
|
+
// whole apply over a restart would lose the merge result.
|
|
569
|
+
console.error('[config-merge] gateway restart failed:', toErrorMessage(err));
|
|
570
|
+
}
|
|
571
|
+
}
|
|
401
572
|
return result;
|
|
402
573
|
}
|
|
574
|
+
/**
|
|
575
|
+
* The one owner of "fetch bootstrap and apply it". Every caller — the
|
|
576
|
+
* `update_config` WS handler, the `bootstrap` CLI, the opt-in startup refresh —
|
|
577
|
+
* goes through here so the deploy-type decision cannot drift between them.
|
|
578
|
+
*
|
|
579
|
+
* Managed installs ('vm'/'k8s') are provisioned end to end by the platform and
|
|
580
|
+
* get the full apply. Anything else — 'standalone', 'external', or a payload
|
|
581
|
+
* from an older backend that omits `deploymentType` — is a third-party machine
|
|
582
|
+
* and gets the scoped, additive merge only. Never rewrite files we don't own.
|
|
583
|
+
*/
|
|
584
|
+
export async function fetchAndApplyConfig(api, agentId) {
|
|
585
|
+
const data = await api.agentBootstrap(agentId);
|
|
586
|
+
setResolvedDeployType(data.deploymentType);
|
|
587
|
+
const deployType = getResolvedDeployType() ?? 'unknown';
|
|
588
|
+
if (isManagedDeploy()) {
|
|
589
|
+
console.log(`[apply-config] managed install (deployType=${deployType}) — full apply`);
|
|
590
|
+
await applyBootstrapConfig(data);
|
|
591
|
+
return { managed: true };
|
|
592
|
+
}
|
|
593
|
+
console.log(`[apply-config] third-party install (deployType=${deployType}) — scoped merge only, ` +
|
|
594
|
+
'user-owned files left alone');
|
|
595
|
+
const mergeResult = await applyMergeableConfig(data);
|
|
596
|
+
return { managed: false, mergeResult };
|
|
597
|
+
}
|
|
403
598
|
//# sourceMappingURL=apply-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-config.js","sourceRoot":"","sources":["../../src/utils/apply-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAE3F,SAAS,cAAc;IACrB,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACtF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC9B,cAAuC,EACvC,OAA+B;IAE/B,MAAM,IAAI,GAAG,cAAc,CAAC,IAEf,CAAC;IACd,MAAM,MAAM,GAAG,cAAc,CAAC,MAEjB,CAAC;IAEd,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAsE,EAAE,CAAC;IAEvF,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnB,kDAAkD;QAClD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,iDAAiD;YACjD,MAAM,cAAc,GAA2B;gBAC7C,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,oBAAoB;gBAChC,MAAM,EAAE,gBAAgB;aACzB,CAAC;YACF,MAAM,MAAM,GACV,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;YAClF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,WAAW,CAAC,GAAG;oBACtB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK;iBACN,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;QAC7B,4DAA4D;QAC5D,KAAK,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,IAAI,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;YACvE,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,GAAG,YAAY,QAAQ,CAAC,GAAG;oBAClC,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,YAAY;oBACtB,KAAK;iBACN,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;YACjF,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAqB;IAC9D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,yBAAyB;IACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAED,8EAA8E;IAC9E,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,MAAM,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC;IACjG,CAAC;IAED,qFAAqF;IACrF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,+DAA+D;IAC/D,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,6DAA6D;QAC7D,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,EAAE;gBAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAEpD,8BAA8B;QAC9B,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACvB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,wCAAwC,EACxC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACvC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2EAA2E;AAC3E,SAAS,OAAO,CAAC,GAAY,EAAE,OAAe;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1C,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AACvE,SAAS,OAAO,CAAC,GAAe,EAAE,OAAe,EAAE,KAAc;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,GAAe,GAAG,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC5C,GAAG,GAAG,GAAG,CAAC,GAAG,CAAe,CAAC;IAC/B,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,CAAC;AASD;;;;;;;;;GASG;AACH,SAAS,SAAS,CAChB,KAAiB,EACjB,MAAkB,EAClB,OAAe,EACf,SAAiB;IAEjB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAEzE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,UAAU,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,iCAAiC;IACjC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChB,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,UAAU,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,sCAAsC,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1F,CAAC;QACD,IAAI,QAAQ;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,sCAAsC,OAAO,uBAAuB,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAgB,EAAE,IAAa;IAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAqB;IAC9D,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE7D,8EAA8E;IAC9E,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,GAAG,CACT,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,KAAK,GAAe,QAAQ,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;QAEtC,MAAM,YAAY,GAAe,IAAI,CAAC,cAA4B,CAAC;QAEnE,mEAAmE;QACnE,sEAAsE;QACtE,4BAA4B;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAwB,CAAC;YACnD,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7C,CAAC,CAAG,KAAK,CAAC,GAAkB,CAAC,OAAmB;gBAChD,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,MAAM,GAAe,aAAa,CAAC,cAAc,CAAC;gBACtD,CAAC,CAAE,cAA6B;gBAChC,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;oBACnB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CACV,8CAA8C,CAAC,6CAA6C,CAC7F,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,UAAU,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,sBAAsB,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,GAAG,CACT,gCAAgC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,OAAO,UAAU,EAAE,CACvF,CAAC;QACJ,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,8FAA8F,CAC/F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,8EAA8E;IAC9E,4EAA4E;IAC5E,uCAAuC;IACvC,MAAM,kBAAkB,GAAe,EAAE,CAAC;IAC1C,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE;gBAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,kBAAkB,CAAC,GAAG,GAAG,QAAQ,CAAC;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,EAAE,GAAG,IAAI,CAAC,cAA4B,CAAC;QAC7C,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,GAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QAClD,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,QAAQ,CAAC;YAEvB,wEAAwE;YACxE,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAwB,CAAC;gBACnD,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC7C,CAAC,CAAG,KAAK,CAAC,GAAkB,CAAC,OAAmB;oBAChD,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,MAAM,GAAe,aAAa,CAAC,cAAc,CAAC;oBACtD,CAAC,CAAE,cAA6B;oBAChC,CAAC,CAAC,EAAE,CAAC;gBACP,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;wBACnB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBACrF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CACV,gDAAgD,CAAC,6CAA6C,CAC/F,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;gBACtC,OAAO,KAAK,CAAC,UAAU,CAAC;gBACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC;YAED,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBACtE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtF,IAAI,CAAC,CAAC,OAAO;oBAAE,OAAO,GAAG,IAAI,CAAC;YAChC,CAAC;YACD,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,sFAAsF,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"apply-config.js","sourceRoot":"","sources":["../../src/utils/apply-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Write ~/.claude/settings.json, ~/.claude/cc-notify.sh, and auth-profiles.json
|
|
3
3
|
* from a flat env vars dict (ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL).
|
|
4
|
+
*
|
|
5
|
+
* This is a WHOLESALE rewrite of the user's Claude settings, so it is gated on
|
|
6
|
+
* the install being managed ('vm'/'k8s'). The guard lives here rather than in
|
|
7
|
+
* the callers deliberately: it is defense in depth that holds for every current
|
|
8
|
+
* and future caller. `agent-controller bootstrap` on a developer laptop once
|
|
9
|
+
* blew away ~/.claude/settings.json — that must not be re-reachable.
|
|
4
10
|
*/
|
|
5
11
|
export declare function writeClaudeEnv(envVars: Record<string, string>): Promise<void>;
|