32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import type { ExecElevatedDefaults } from "../bash-tools.js";
|
|
import type { resolveSandboxContext } from "../sandbox.js";
|
|
import type { EmbeddedSandboxInfo } from "./types.js";
|
|
|
|
export function buildEmbeddedSandboxInfo(
|
|
sandbox?: Awaited<ReturnType<typeof resolveSandboxContext>>,
|
|
execElevated?: ExecElevatedDefaults,
|
|
): EmbeddedSandboxInfo | undefined {
|
|
if (!sandbox?.enabled) return undefined;
|
|
const elevatedAllowed = Boolean(execElevated?.enabled && execElevated.allowed);
|
|
return {
|
|
enabled: true,
|
|
workspaceDir: sandbox.workspaceDir,
|
|
workspaceAccess: sandbox.workspaceAccess,
|
|
agentWorkspaceMount: sandbox.workspaceAccess === "ro" ? "/agent" : undefined,
|
|
browserControlUrl: sandbox.browser?.controlUrl,
|
|
browserNoVncUrl: sandbox.browser?.noVncUrl,
|
|
hostBrowserAllowed: sandbox.browserAllowHostControl,
|
|
allowedControlUrls: sandbox.browserAllowedControlUrls,
|
|
allowedControlHosts: sandbox.browserAllowedControlHosts,
|
|
allowedControlPorts: sandbox.browserAllowedControlPorts,
|
|
...(elevatedAllowed
|
|
? {
|
|
elevated: {
|
|
allowed: true,
|
|
defaultLevel: execElevated?.defaultLevel ?? "off",
|
|
},
|
|
}
|
|
: {}),
|
|
};
|
|
}
|