-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Expand file tree
/
Copy path005-browser-timeout-env-var.patch
More file actions
77 lines (70 loc) · 3.21 KB
/
005-browser-timeout-env-var.patch
File metadata and controls
77 lines (70 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
diff --git a/extensions/browser/src/browser/act-policy.ts b/extensions/browser/src/browser/act-policy.ts
index 9407858beb..fdf623082a 100644
--- a/extensions/browser/src/browser/act-policy.ts
+++ b/extensions/browser/src/browser/act-policy.ts
@@ -4,11 +4,18 @@ export const ACT_MAX_CLICK_DELAY_MS = 5_000;
export const ACT_MAX_WAIT_TIME_MS = 30_000;
const ACT_MIN_TIMEOUT_MS = 500;
-const ACT_MAX_INTERACTION_TIMEOUT_MS = 60_000;
-const ACT_MAX_WAIT_TIMEOUT_MS = 120_000;
+const ACT_MAX_INTERACTION_TIMEOUT_MS = 120_000;
+const ACT_MAX_WAIT_TIMEOUT_MS = 300_000;
const ACT_DEFAULT_INTERACTION_TIMEOUT_MS = 8_000;
const ACT_DEFAULT_WAIT_TIMEOUT_MS = 20_000;
+function resolveEnvBrowserTimeoutMs(): number | undefined {
+ const raw = process.env.OPENCLAW_BROWSER_TIMEOUT_MS;
+ if (!raw) return undefined;
+ const parsed = parseInt(raw, 10);
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
+}
+
export function normalizeActBoundedNonNegativeMs(
value: number | undefined,
fieldName: string,
@@ -28,17 +35,19 @@ export function normalizeActBoundedNonNegativeMs(
}
export function resolveActInteractionTimeoutMs(timeoutMs?: number): number {
+ const defaultMs = resolveEnvBrowserTimeoutMs() ?? ACT_DEFAULT_INTERACTION_TIMEOUT_MS;
const normalized =
typeof timeoutMs === "number" && Number.isFinite(timeoutMs)
? Math.floor(timeoutMs)
- : ACT_DEFAULT_INTERACTION_TIMEOUT_MS;
+ : defaultMs;
return Math.max(ACT_MIN_TIMEOUT_MS, Math.min(ACT_MAX_INTERACTION_TIMEOUT_MS, normalized));
}
export function resolveActWaitTimeoutMs(timeoutMs?: number): number {
+ const defaultMs = resolveEnvBrowserTimeoutMs() ?? ACT_DEFAULT_WAIT_TIMEOUT_MS;
const normalized =
typeof timeoutMs === "number" && Number.isFinite(timeoutMs)
? Math.floor(timeoutMs)
- : ACT_DEFAULT_WAIT_TIMEOUT_MS;
+ : defaultMs;
return Math.max(ACT_MIN_TIMEOUT_MS, Math.min(ACT_MAX_WAIT_TIMEOUT_MS, normalized));
}
diff --git a/extensions/browser/src/node-host/invoke-browser.ts b/extensions/browser/src/node-host/invoke-browser.ts
index b7f05084c3..a1f848202f 100644
--- a/extensions/browser/src/node-host/invoke-browser.ts
+++ b/extensions/browser/src/node-host/invoke-browser.ts
@@ -39,6 +39,13 @@ const BROWSER_PROXY_MAX_FILE_BYTES = 10 * 1024 * 1024;
const DEFAULT_BROWSER_PROXY_TIMEOUT_MS = 20_000;
const BROWSER_PROXY_STATUS_TIMEOUT_MS = 750;
+function resolveEnvBrowserTimeoutMs(): number | undefined {
+ const raw = process.env.OPENCLAW_BROWSER_TIMEOUT_MS;
+ if (!raw) return undefined;
+ const parsed = parseInt(raw, 10);
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
+}
+
function normalizeProfileAllowlist(raw?: string[]): string[] {
return Array.isArray(raw) ? raw.map((entry) => entry.trim()).filter(Boolean) : [];
}
@@ -134,9 +141,10 @@ function decodeParams<T>(raw?: string | null): T {
}
function resolveBrowserProxyTimeout(timeoutMs?: number): number {
+ const defaultMs = resolveEnvBrowserTimeoutMs() ?? DEFAULT_BROWSER_PROXY_TIMEOUT_MS;
return typeof timeoutMs === "number" && Number.isFinite(timeoutMs)
? Math.max(1, Math.floor(timeoutMs))
- : DEFAULT_BROWSER_PROXY_TIMEOUT_MS;
+ : defaultMs;
}
function isBrowserProxyTimeoutError(err: unknown): boolean {