@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.
- package/dist/api.d.ts +2 -14
- package/dist/api.js +1 -15
- package/dist/api.js.map +1 -1
- package/dist/commands/agent-update-cli.js +0 -7
- package/dist/commands/agent-update-cli.js.map +1 -1
- package/dist/commands/bootstrap.d.ts +0 -10
- package/dist/commands/bootstrap.js +2 -16
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.d.ts +0 -16
- package/dist/commands/channel-server.js +1 -19
- package/dist/commands/channel-server.js.map +1 -1
- package/dist/commands/deploy-cli.js +2 -12
- package/dist/commands/deploy-cli.js.map +1 -1
- package/dist/commands/diagnostics-cli.js +0 -6
- package/dist/commands/diagnostics-cli.js.map +1 -1
- package/dist/commands/install-deps.d.ts +0 -10
- package/dist/commands/install-deps.js +1 -10
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/install.js +0 -6
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/package-install-cli.js +1 -14
- package/dist/commands/package-install-cli.js.map +1 -1
- package/dist/commands/plugin-update-cli.js +1 -8
- package/dist/commands/plugin-update-cli.js.map +1 -1
- package/dist/commands/restart-cli.js +0 -4
- package/dist/commands/restart-cli.js.map +1 -1
- package/dist/commands/self-update.d.ts +2 -24
- package/dist/commands/self-update.js +5 -54
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/stop-cli.d.ts +0 -4
- package/dist/commands/stop-cli.js +1 -24
- package/dist/commands/stop-cli.js.map +1 -1
- package/dist/config-file.d.ts +3 -20
- package/dist/config-file.js +3 -22
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +0 -22
- package/dist/config.js +1 -34
- package/dist/config.js.map +1 -1
- package/dist/connection.js +2 -39
- package/dist/connection.js.map +1 -1
- package/dist/handlers/agent-update.d.ts +1 -21
- package/dist/handlers/agent-update.js +1 -21
- package/dist/handlers/agent-update.js.map +1 -1
- package/dist/handlers/chat.d.ts +0 -8
- package/dist/handlers/chat.js +3 -23
- package/dist/handlers/chat.js.map +1 -1
- package/dist/handlers/file-write.js +1 -4
- package/dist/handlers/file-write.js.map +1 -1
- package/dist/handlers/memory.d.ts +1 -9
- package/dist/handlers/memory.js +3 -25
- package/dist/handlers/memory.js.map +1 -1
- package/dist/handlers/onboarding.js +0 -2
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/pair.js +1 -3
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/plugin-update.d.ts +1 -16
- package/dist/handlers/plugin-update.js +1 -16
- package/dist/handlers/plugin-update.js.map +1 -1
- package/dist/handlers/restart.js +0 -2
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/self-update.d.ts +2 -29
- package/dist/handlers/self-update.js +3 -35
- package/dist/handlers/self-update.js.map +1 -1
- package/dist/handlers/slack-event.d.ts +2 -9
- package/dist/handlers/slack-event.js +2 -10
- package/dist/handlers/slack-event.js.map +1 -1
- package/dist/heartbeat.d.ts +2 -12
- package/dist/heartbeat.js +3 -18
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.js +6 -50
- package/dist/index.js.map +1 -1
- package/dist/lockfile.d.ts +0 -7
- package/dist/lockfile.js +0 -9
- package/dist/lockfile.js.map +1 -1
- package/dist/memory-mcp-server.d.ts +1 -19
- package/dist/memory-mcp-server.js +5 -53
- package/dist/memory-mcp-server.js.map +1 -1
- package/dist/mock-board-worker.d.ts +2 -25
- package/dist/mock-board-worker.js +7 -54
- package/dist/mock-board-worker.js.map +1 -1
- package/dist/platform/linux.js +0 -3
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +0 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/providers/chat-types.d.ts +0 -3
- package/dist/providers/chat-types.js +0 -3
- package/dist/providers/chat-types.js.map +1 -1
- package/dist/providers/claude-code/channel-server.d.ts +0 -19
- package/dist/providers/claude-code/channel-server.js +0 -19
- package/dist/providers/claude-code/channel-server.js.map +1 -1
- package/dist/providers/claude-code/index.d.ts +0 -22
- package/dist/providers/claude-code/index.js +3 -26
- package/dist/providers/claude-code/index.js.map +1 -1
- package/dist/providers/claude-code/login-flow.d.ts +0 -17
- package/dist/providers/claude-code/login-flow.js +2 -16
- package/dist/providers/claude-code/login-flow.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.d.ts +1 -16
- package/dist/providers/claude-code/settings-writer.js +5 -20
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/claude-code/socket-bridge.d.ts +0 -35
- package/dist/providers/claude-code/socket-bridge.js +2 -43
- package/dist/providers/claude-code/socket-bridge.js.map +1 -1
- package/dist/providers/claude-code/spawn-claude.d.ts +0 -17
- package/dist/providers/claude-code/spawn-claude.js +1 -15
- package/dist/providers/claude-code/spawn-claude.js.map +1 -1
- package/dist/providers/index.d.ts +1 -10
- package/dist/providers/index.js +2 -13
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock/index.d.ts +0 -4
- package/dist/providers/mock/index.js +0 -4
- package/dist/providers/mock/index.js.map +1 -1
- package/dist/providers/openclaw/auto-pair.d.ts +1 -6
- package/dist/providers/openclaw/auto-pair.js +1 -10
- package/dist/providers/openclaw/auto-pair.js.map +1 -1
- package/dist/providers/openclaw/device-identity.d.ts +1 -1
- package/dist/providers/openclaw/device-identity.js +33 -17
- package/dist/providers/openclaw/device-identity.js.map +1 -1
- package/dist/providers/openclaw/gateway-adapter.d.ts +0 -5
- package/dist/providers/openclaw/gateway-adapter.js +4 -32
- package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
- package/dist/providers/openclaw/gateway-client.js +3 -9
- package/dist/providers/openclaw/gateway-client.js.map +1 -1
- package/dist/providers/openclaw/index.js +2 -15
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/providers/types.d.ts +0 -10
- package/dist/slack-relay-server.d.ts +4 -33
- package/dist/slack-relay-server.js +9 -57
- package/dist/slack-relay-server.js.map +1 -1
- package/dist/types.d.ts +1 -12
- package/dist/types.js +0 -6
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-controller-bin.d.ts +0 -6
- package/dist/utils/agent-controller-bin.js +1 -21
- package/dist/utils/agent-controller-bin.js.map +1 -1
- package/dist/utils/anthropic-auth.d.ts +1 -22
- package/dist/utils/anthropic-auth.js +0 -10
- package/dist/utils/anthropic-auth.js.map +1 -1
- package/dist/utils/apply-config.d.ts +8 -68
- package/dist/utils/apply-config.js +75 -203
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/backup-push.d.ts +0 -10
- package/dist/utils/backup-push.js +0 -15
- package/dist/utils/backup-push.js.map +1 -1
- package/dist/utils/claude-env.d.ts +1 -10
- package/dist/utils/claude-env.js +2 -14
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +5 -43
- package/dist/utils/config-merge-paths.js +5 -43
- package/dist/utils/config-merge-paths.js.map +1 -1
- package/dist/utils/deploy-type.d.ts +1 -13
- package/dist/utils/deploy-type.js +2 -19
- package/dist/utils/deploy-type.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +0 -7
- package/dist/utils/diagnostics.js +0 -15
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/exec.d.ts +0 -10
- package/dist/utils/exec.js +2 -32
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gateway-restart-handler.d.ts +1 -8
- package/dist/utils/gateway-restart-handler.js +1 -8
- package/dist/utils/gateway-restart-handler.js.map +1 -1
- package/dist/utils/gateway-restart.d.ts +1 -11
- package/dist/utils/gateway-restart.js +1 -11
- package/dist/utils/gateway-restart.js.map +1 -1
- package/dist/utils/knowledge-graph.d.ts +2 -25
- package/dist/utils/knowledge-graph.js +2 -37
- package/dist/utils/knowledge-graph.js.map +1 -1
- package/dist/utils/knowledge-push.d.ts +0 -4
- package/dist/utils/knowledge-push.js +4 -19
- package/dist/utils/knowledge-push.js.map +1 -1
- package/dist/utils/legacy-mcp-servers.d.ts +1 -11
- package/dist/utils/legacy-mcp-servers.js +1 -11
- package/dist/utils/legacy-mcp-servers.js.map +1 -1
- package/dist/utils/log-collector.js +0 -2
- package/dist/utils/log-collector.js.map +1 -1
- package/dist/utils/openclaw-ops.d.ts +5 -72
- package/dist/utils/openclaw-ops.js +6 -98
- package/dist/utils/openclaw-ops.js.map +1 -1
- package/dist/utils/openclaw-stack-update.d.ts +2 -14
- package/dist/utils/openclaw-stack-update.js +1 -6
- package/dist/utils/openclaw-stack-update.js.map +1 -1
- package/dist/utils/package-install.d.ts +0 -5
- package/dist/utils/package-install.js +2 -21
- package/dist/utils/package-install.js.map +1 -1
- package/dist/utils/package-version.d.ts +1 -9
- package/dist/utils/package-version.js +1 -9
- package/dist/utils/package-version.js.map +1 -1
- package/dist/utils/parse-id-at-version.d.ts +1 -11
- package/dist/utils/parse-id-at-version.js +1 -11
- package/dist/utils/parse-id-at-version.js.map +1 -1
- package/dist/utils/plugin-reconcile.d.ts +2 -33
- package/dist/utils/plugin-reconcile.js +7 -77
- package/dist/utils/plugin-reconcile.js.map +1 -1
- package/dist/utils/release-channel.d.ts +0 -8
- package/dist/utils/release-channel.js.map +1 -1
- package/dist/utils/write-home-files.d.ts +2 -24
- package/dist/utils/write-home-files.js +3 -27
- package/dist/utils/write-home-files.js.map +1 -1
- package/dist/utils/write-workspace-files.d.ts +0 -14
- package/dist/utils/write-workspace-files.js +1 -19
- package/dist/utils/write-workspace-files.js.map +1 -1
- package/dist/workspace.d.ts +1 -21
- package/dist/workspace.js +1 -21
- package/dist/workspace.js.map +1 -1
- 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
|
-
*
|
|
42
|
-
*
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
254
|
-
//
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
//
|
|
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
|
-
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
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
|
-
//
|
|
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
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
610
|
-
//
|
|
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
|
}
|