mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 11:40:25 +00:00
refactor: share browser and sandbox helpers
This commit is contained in:
@@ -46,6 +46,7 @@ export {
|
||||
uploadDirectoryToSshTarget,
|
||||
} from "./sandbox/ssh.js";
|
||||
export { createRemoteShellSandboxFsBridge } from "./sandbox/remote-fs-bridge.js";
|
||||
export { createWritableRenameTargetResolver } from "./sandbox/fs-bridge-rename-targets.js";
|
||||
export { resolveWritableRenameTargets } from "./sandbox/fs-bridge-rename-targets.js";
|
||||
export { resolveWritableRenameTargetsForBridge } from "./sandbox/fs-bridge-rename-targets.js";
|
||||
|
||||
|
||||
@@ -30,3 +30,10 @@ export function resolveWritableRenameTargetsForBridge<T extends { containerPath:
|
||||
ensureWritable,
|
||||
});
|
||||
}
|
||||
|
||||
export function createWritableRenameTargetResolver<T extends { containerPath: string }>(
|
||||
resolveTarget: (params: { filePath: string; cwd?: string }) => T,
|
||||
ensureWritable: (target: T, action: string) => void,
|
||||
): (params: { from: string; to: string; cwd?: string }) => { from: T; to: T } {
|
||||
return (params) => resolveWritableRenameTargetsForBridge(params, resolveTarget, ensureWritable);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import path from "node:path";
|
||||
import { isPathInside } from "../../infra/path-guards.js";
|
||||
import type { SandboxBackendCommandParams, SandboxBackendCommandResult } from "./backend.js";
|
||||
import { SANDBOX_PINNED_MUTATION_PYTHON } from "./fs-bridge-mutation-helper.js";
|
||||
import { resolveWritableRenameTargetsForBridge } from "./fs-bridge-rename-targets.js";
|
||||
import { createWritableRenameTargetResolver } from "./fs-bridge-rename-targets.js";
|
||||
import type { SandboxFsBridge, SandboxFsStat, SandboxResolvedPath } from "./fs-bridge.js";
|
||||
import {
|
||||
isPathInsideContainerRoot,
|
||||
@@ -36,19 +36,16 @@ export function createRemoteShellSandboxFsBridge(params: {
|
||||
}
|
||||
|
||||
class RemoteShellSandboxFsBridge implements SandboxFsBridge {
|
||||
private readonly resolveRenameTargets = createWritableRenameTargetResolver(
|
||||
(target) => this.resolveTarget(target),
|
||||
(target, action) => this.ensureWritable(target, action),
|
||||
);
|
||||
|
||||
constructor(
|
||||
private readonly sandbox: SandboxContext,
|
||||
private readonly runtime: RemoteShellSandboxHandle,
|
||||
) {}
|
||||
|
||||
private resolveRenameTargets(params: { from: string; to: string; cwd?: string }) {
|
||||
return resolveWritableRenameTargetsForBridge(
|
||||
params,
|
||||
(target) => this.resolveTarget(target),
|
||||
(target, action) => this.ensureWritable(target, action),
|
||||
);
|
||||
}
|
||||
|
||||
resolvePath(params: { filePath: string; cwd?: string }): SandboxResolvedPath {
|
||||
const target = this.resolveTarget(params);
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user