diff --git a/src/agents/sandbox/backend.ts b/src/agents/sandbox/backend.ts index 8bad8a854116..b29db432844e 100644 --- a/src/agents/sandbox/backend.ts +++ b/src/agents/sandbox/backend.ts @@ -1,6 +1,6 @@ import type { OpenClawConfig } from "../../config/config.js"; import { normalizeOptionalLowercaseString } from "../../shared/string-coerce.js"; -import type { SandboxFsBridge } from "./fs-bridge.js"; +import type { SandboxFsBridge } from "./fs-bridge.types.js"; import type { SandboxRegistryEntry } from "./registry.js"; import type { SandboxConfig, SandboxContext } from "./types.js"; diff --git a/src/agents/sandbox/fs-bridge.ts b/src/agents/sandbox/fs-bridge.ts index b03b415ba89c..7a06bd69856f 100644 --- a/src/agents/sandbox/fs-bridge.ts +++ b/src/agents/sandbox/fs-bridge.ts @@ -10,6 +10,7 @@ import { } from "./fs-bridge-mutation-helper.js"; import { SandboxFsPathGuard } from "./fs-bridge-path-safety.js"; import { buildStatPlan, type SandboxFsCommandPlan } from "./fs-bridge-shell-command-plans.js"; +import type { SandboxFsBridge, SandboxFsStat, SandboxResolvedPath } from "./fs-bridge.types.js"; import { buildSandboxFsMounts, resolveSandboxFsPathWithMounts, @@ -24,44 +25,7 @@ type RunCommandOptions = { signal?: AbortSignal; }; -export type SandboxResolvedPath = { - hostPath?: string; - relativePath: string; - containerPath: string; -}; - -export type SandboxFsStat = { - type: "file" | "directory" | "other"; - size: number; - mtimeMs: number; -}; - -export type SandboxFsBridge = { - resolvePath(params: { filePath: string; cwd?: string }): SandboxResolvedPath; - readFile(params: { filePath: string; cwd?: string; signal?: AbortSignal }): Promise; - writeFile(params: { - filePath: string; - cwd?: string; - data: Buffer | string; - encoding?: BufferEncoding; - mkdir?: boolean; - signal?: AbortSignal; - }): Promise; - mkdirp(params: { filePath: string; cwd?: string; signal?: AbortSignal }): Promise; - remove(params: { - filePath: string; - cwd?: string; - recursive?: boolean; - force?: boolean; - signal?: AbortSignal; - }): Promise; - rename(params: { from: string; to: string; cwd?: string; signal?: AbortSignal }): Promise; - stat(params: { - filePath: string; - cwd?: string; - signal?: AbortSignal; - }): Promise; -}; +export type { SandboxFsBridge, SandboxFsStat, SandboxResolvedPath } from "./fs-bridge.types.js"; export function createSandboxFsBridge(params: { sandbox: SandboxContext }): SandboxFsBridge { return new SandboxFsBridgeImpl(params.sandbox); diff --git a/src/agents/sandbox/fs-bridge.types.ts b/src/agents/sandbox/fs-bridge.types.ts new file mode 100644 index 000000000000..afb31306bee3 --- /dev/null +++ b/src/agents/sandbox/fs-bridge.types.ts @@ -0,0 +1,38 @@ +export type SandboxResolvedPath = { + hostPath?: string; + relativePath: string; + containerPath: string; +}; + +export type SandboxFsStat = { + type: "file" | "directory" | "other"; + size: number; + mtimeMs: number; +}; + +export type SandboxFsBridge = { + resolvePath(params: { filePath: string; cwd?: string }): SandboxResolvedPath; + readFile(params: { filePath: string; cwd?: string; signal?: AbortSignal }): Promise; + writeFile(params: { + filePath: string; + cwd?: string; + data: Buffer | string; + encoding?: BufferEncoding; + mkdir?: boolean; + signal?: AbortSignal; + }): Promise; + mkdirp(params: { filePath: string; cwd?: string; signal?: AbortSignal }): Promise; + remove(params: { + filePath: string; + cwd?: string; + recursive?: boolean; + force?: boolean; + signal?: AbortSignal; + }): Promise; + rename(params: { from: string; to: string; cwd?: string; signal?: AbortSignal }): Promise; + stat(params: { + filePath: string; + cwd?: string; + signal?: AbortSignal; + }): Promise; +}; diff --git a/src/agents/sandbox/remote-fs-bridge.ts b/src/agents/sandbox/remote-fs-bridge.ts index 6e9ca6a0608c..7ac456547861 100644 --- a/src/agents/sandbox/remote-fs-bridge.ts +++ b/src/agents/sandbox/remote-fs-bridge.ts @@ -3,7 +3,7 @@ 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 { createWritableRenameTargetResolver } from "./fs-bridge-rename-targets.js"; -import type { SandboxFsBridge, SandboxFsStat, SandboxResolvedPath } from "./fs-bridge.js"; +import type { SandboxFsBridge, SandboxFsStat, SandboxResolvedPath } from "./fs-bridge.types.js"; import { isPathInsideContainerRoot, normalizeContainerPath as normalizeSandboxContainerPath, diff --git a/src/agents/sandbox/types.ts b/src/agents/sandbox/types.ts index 482ce6a922e2..1280101442f3 100644 --- a/src/agents/sandbox/types.ts +++ b/src/agents/sandbox/types.ts @@ -1,5 +1,5 @@ import type { SandboxBackendHandle, SandboxBackendId } from "./backend.js"; -import type { SandboxFsBridge } from "./fs-bridge.js"; +import type { SandboxFsBridge } from "./fs-bridge.types.js"; import type { SandboxDockerConfig } from "./types.docker.js"; export type { SandboxDockerConfig } from "./types.docker.js";