fix(auto-reply): resolve scp from path for media staging (#79202) · openclaw/openclaw@41c5990
steipete
·
2026-05-08
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -181,6 +181,7 @@ Docs: https://docs.openclaw.ai
|
181 | 181 | - Gateway/macOS: `openclaw gateway stop --disable` now persists the LaunchAgent disable bit even after a previous bootout left the service not loaded, keeping the explicit stay-down path reliable. (#78412) Thanks @wdeveloper16. |
182 | 182 | - Control UI/chat: hide retired and non-public Google Gemini model IDs from chat model catalogs and route the bare `gemini-3-pro` alias to Gemini 3.1 Pro Preview instead of the shut-down Gemini 3 Pro Preview. Thanks @BunsDev. |
183 | 183 | - CLI/install: refuse state-mutating OpenClaw CLI runs as root by default, keep an explicit `OPENCLAW_ALLOW_ROOT=1` escape hatch for intentional root/container use, and update DigitalOcean setup guidance to run OpenClaw as a non-root user. Fixes #67478. Thanks @Jerry-Xin and @natechicago. |
| 184 | +- Auto-reply/media: resolve `scp` from `PATH` when staging sandbox media so nonstandard OpenSSH installs can copy remote attachments. |
184 | 185 | - Gateway/watch: leave `OPENCLAW_TRACE_SYNC_IO` disabled by default in `pnpm gateway:watch:raw` so watch mode avoids noisy Node sync-I/O stack traces unless explicitly requested. |
185 | 186 | - Codex app-server: close stdio stdin before force-killing the managed app-server, matching Codex single-client shutdown behavior and avoiding unsettled CLI exits after successful runs. |
186 | 187 | - CLI/Codex: dispose registered agent harnesses during short-lived CLI shutdown so successful Codex-backed `agent --local` runs do not leave app-server child processes alive. |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -107,6 +107,7 @@ describe("stageSandboxMedia scp remote paths", () => {
|
107 | 107 | workspaceDir, |
108 | 108 | }); |
109 | 109 | |
| 110 | +expect(childProcessMocks.spawn.mock.calls[0]?.[0]).toBe("scp"); |
110 | 111 | const remoteCacheRoot = join(CONFIG_DIR, "media", "remote-cache"); |
111 | 112 | const expectedSafeDir = join(remoteCacheRoot, slugifySessionKey(sessionKey)); |
112 | 113 | try { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -319,7 +319,7 @@ async function scpFile(remoteHost: string, remotePath: string, localPath: string
|
319 | 319 | } |
320 | 320 | return new Promise((resolve, reject) => { |
321 | 321 | const child = spawn( |
322 | | -"/usr/bin/scp", |
| 322 | +"scp", |
323 | 323 | [ |
324 | 324 | "-o", |
325 | 325 | "BatchMode=yes", |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。