feat: add sandbox browser support

This commit is contained in:
Peter Steinberger
2026-01-03 22:11:43 +01:00
parent 107dc1aa42
commit d8a417f7ff
13 changed files with 635 additions and 7 deletions

View File

@@ -256,7 +256,7 @@ async function imageResultFromFile(params: {
function resolveBrowserBaseUrl(controlUrl?: string) {
const cfg = loadConfig();
const resolved = resolveBrowserConfig(cfg.browser);
if (!resolved.enabled) {
if (!resolved.enabled && !controlUrl?.trim()) {
throw new Error(
"Browser control is disabled. Set browser.enabled=true in ~/.clawdis/clawdis.json.",
);
@@ -575,7 +575,7 @@ const BrowserToolSchema = Type.Union([
}),
]);
function createBrowserTool(): AnyAgentTool {
function createBrowserTool(opts?: { defaultControlUrl?: string }): AnyAgentTool {
return {
label: "Browser",
name: "browser",
@@ -586,7 +586,9 @@ function createBrowserTool(): AnyAgentTool {
const params = args as Record<string, unknown>;
const action = readStringParam(params, "action", { required: true });
const controlUrl = readStringParam(params, "controlUrl");
const baseUrl = resolveBrowserBaseUrl(controlUrl);
const baseUrl = resolveBrowserBaseUrl(
controlUrl ?? opts?.defaultControlUrl,
);
switch (action) {
case "status":
@@ -2304,9 +2306,11 @@ function createGatewayTool(): AnyAgentTool {
};
}
export function createClawdisTools(): AnyAgentTool[] {
export function createClawdisTools(options?: {
browserControlUrl?: string;
}): AnyAgentTool[] {
return [
createBrowserTool(),
createBrowserTool({ defaultControlUrl: options?.browserControlUrl }),
createCanvasTool(),
createNodesTool(),
createCronTool(),