visionclaw 0.1.178-beta.8 → 0.1.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/assets/visionclaw_pricing.jpeg +0 -0
- package/dist/agent/command-handlers.d.ts +2 -0
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +63 -3
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/agent/heartbeat-manager.d.ts +10 -0
- package/dist/agent/heartbeat-manager.d.ts.map +1 -1
- package/dist/agent/heartbeat-manager.js +9 -0
- package/dist/agent/heartbeat-manager.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +1 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/stream-handler.d.ts +2 -1
- package/dist/agent/stream-handler.d.ts.map +1 -1
- package/dist/agent/stream-handler.js +4 -5
- package/dist/agent/stream-handler.js.map +1 -1
- package/dist/agent/subscription-gate.d.ts +1 -1
- package/dist/agent/subscription-gate.d.ts.map +1 -1
- package/dist/agent/subscription-gate.js +7 -3
- package/dist/agent/subscription-gate.js.map +1 -1
- package/dist/agent/tool-alarm-evaluator.d.ts +37 -0
- package/dist/agent/tool-alarm-evaluator.d.ts.map +1 -0
- package/dist/agent/tool-alarm-evaluator.js +103 -0
- package/dist/agent/tool-alarm-evaluator.js.map +1 -0
- package/dist/agent/tool-call-watchdog.d.ts +29 -22
- package/dist/agent/tool-call-watchdog.d.ts.map +1 -1
- package/dist/agent/tool-call-watchdog.js +189 -36
- package/dist/agent/tool-call-watchdog.js.map +1 -1
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +13 -6
- package/dist/agent/wake-cycle-runner.js.map +1 -1
- package/dist/builtin-skills/visionclaw-manual/SKILL.md +17 -0
- package/dist/channels/interface.d.ts +8 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +3 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +27 -22
- package/dist/channels/telegram.js.map +1 -1
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +0 -3
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -3
- package/dist/config/types.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/onboarding/bot-profile.d.ts.map +1 -1
- package/dist/onboarding/bot-profile.js +1 -0
- package/dist/onboarding/bot-profile.js.map +1 -1
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +0 -31
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts +10 -0
- package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
- package/dist/onboarding/onboarding-service-client.js +22 -0
- package/dist/onboarding/onboarding-service-client.js.map +1 -1
- package/dist/onboarding/prepare-mac.js +2 -2
- package/dist/onboarding/prepare-mac.js.map +1 -1
- package/dist/onboarding/provisioning-spec.d.ts +0 -6
- package/dist/onboarding/provisioning-spec.d.ts.map +1 -1
- package/dist/onboarding/provisioning-spec.js +0 -7
- package/dist/onboarding/provisioning-spec.js.map +1 -1
- package/dist/onboarding/setup-state.d.ts +0 -1
- package/dist/onboarding/setup-state.d.ts.map +1 -1
- package/dist/onboarding/setup-state.js +0 -1
- package/dist/onboarding/setup-state.js.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +0 -28
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/utils/restart.d.ts.map +1 -1
- package/dist/utils/restart.js +18 -7
- package/dist/utils/restart.js.map +1 -1
- package/dist-agent/bundle.cjs +2335 -2451
- package/package.json +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart alarm evaluator — uses a fast model to decide whether a long-running
|
|
3
|
+
* non-browser tool call should be aborted or allowed to continue.
|
|
4
|
+
*
|
|
5
|
+
* Called by the ToolCallWatchdog when a non-browser tool exceeds the alarm
|
|
6
|
+
* threshold (default 30s). The evaluator sees the tool name, its input,
|
|
7
|
+
* elapsed time, and a summary of recent agent activity, then returns a
|
|
8
|
+
* binary "continue" or "abort" decision.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { zodOutputFormat } from "@anthropic-ai/sdk/helpers/zod";
|
|
12
|
+
import { logger } from "../logger.js";
|
|
13
|
+
import { createClient, getFastResponderModelId, isGptModel, configureOpenAIProvider, } from "./providers/client-factory.js";
|
|
14
|
+
import { Agent, run } from "@openai/agents";
|
|
15
|
+
const MAX_TOKENS = 256;
|
|
16
|
+
const AlarmDecisionSchema = z.object({
|
|
17
|
+
decision: z
|
|
18
|
+
.enum(["continue", "abort"])
|
|
19
|
+
.describe("'continue' if the tool is likely making progress and should keep running. " +
|
|
20
|
+
"'abort' if the tool appears stuck or the wait is unreasonable."),
|
|
21
|
+
reason: z
|
|
22
|
+
.string()
|
|
23
|
+
.describe("One-sentence reasoning for the decision."),
|
|
24
|
+
});
|
|
25
|
+
const SYSTEM_PROMPT = [
|
|
26
|
+
"You are a watchdog process monitoring a tool call inside an AI agent.",
|
|
27
|
+
"A tool has been running for longer than expected. Your job is to decide whether the agent should keep waiting or abort the call.",
|
|
28
|
+
"",
|
|
29
|
+
"Guidelines by tool type:",
|
|
30
|
+
"",
|
|
31
|
+
"**Bash / Shell commands**:",
|
|
32
|
+
"- Commands like `npm install`, `pnpm install`, `pip install`, compilation (`make`, `cargo build`, `gcc`), `git clone`, large downloads, or data processing can legitimately run for minutes or even tens of minutes.",
|
|
33
|
+
"- Look at the command in the input: if it's a build/install/compile/download, lean strongly toward 'continue' even at several minutes.",
|
|
34
|
+
"- Short commands like `ls`, `cat`, `echo`, `pwd` should be instant; >30s means something is wrong.",
|
|
35
|
+
"- Interactive commands that wait for stdin (e.g. `read`, `python` without a script) will hang forever — abort these.",
|
|
36
|
+
"",
|
|
37
|
+
"**WebFetch / web requests**: reasonable up to ~60s for complex pages, but >90s usually means the target is unresponsive.",
|
|
38
|
+
"",
|
|
39
|
+
"**API calls (email, calendar, drive)**: usually complete in <15s; >30s likely means a network issue.",
|
|
40
|
+
"",
|
|
41
|
+
"**Memory / database operations**: usually instant; >30s is abnormal.",
|
|
42
|
+
"",
|
|
43
|
+
"**Task / subagent calls**: these run a child agent and can take minutes — lean toward 'continue' unless it has been running for an unusually long time (>10 min).",
|
|
44
|
+
"",
|
|
45
|
+
"General principles:",
|
|
46
|
+
"- If this is alarm #1 and the tool could plausibly still be working, lean toward 'continue'.",
|
|
47
|
+
"- Consider the elapsed time relative to what the operation is doing. 2 minutes for `npm install` is normal; 2 minutes for a memory lookup is not.",
|
|
48
|
+
"- When in doubt, 'continue' is safer than 'abort' — the agent can always retry an aborted call, but aborting a nearly-complete long operation wastes all progress.",
|
|
49
|
+
"",
|
|
50
|
+
"Respond with your decision and a brief reason.",
|
|
51
|
+
].join("\n");
|
|
52
|
+
/**
|
|
53
|
+
* Evaluate whether a long-running tool call should be aborted.
|
|
54
|
+
*
|
|
55
|
+
* Returns `null` on failure (caller should treat as "continue" to be safe).
|
|
56
|
+
*/
|
|
57
|
+
export async function evaluateToolAlarm(context, config) {
|
|
58
|
+
const userMessage = [
|
|
59
|
+
`## Stalled Tool Call`,
|
|
60
|
+
`- **Tool**: ${context.toolName}`,
|
|
61
|
+
`- **Input**: ${context.toolInput.length > 500 ? context.toolInput.substring(0, 500) + "…" : context.toolInput}`,
|
|
62
|
+
`- **Elapsed**: ${context.elapsedSeconds}s`,
|
|
63
|
+
`- **Alarm**: #${context.alarmCount} (checked every 30s; absolute ceiling: ${Math.round(context.absoluteTimeoutSeconds / 60)} min)`,
|
|
64
|
+
context.alarmCount > 1 ? `- **Note**: The evaluator has already decided to continue ${context.alarmCount - 1} time(s). Consider whether the operation is truly making progress.` : "",
|
|
65
|
+
"",
|
|
66
|
+
"## Recent Agent Activity",
|
|
67
|
+
context.activitySummary || "(no activity recorded)",
|
|
68
|
+
"",
|
|
69
|
+
"Should the agent keep waiting or abort this tool call?",
|
|
70
|
+
].join("\n");
|
|
71
|
+
try {
|
|
72
|
+
if (isGptModel(config.model)) {
|
|
73
|
+
configureOpenAIProvider(config);
|
|
74
|
+
const agent = new Agent({
|
|
75
|
+
name: "Tool Alarm Evaluator",
|
|
76
|
+
instructions: SYSTEM_PROMPT,
|
|
77
|
+
model: getFastResponderModelId(config),
|
|
78
|
+
outputType: AlarmDecisionSchema,
|
|
79
|
+
});
|
|
80
|
+
const result = await run(agent, [{ role: "user", content: [{ type: "input_text", text: userMessage }] }], { maxTurns: 1 });
|
|
81
|
+
return AlarmDecisionSchema.parse(result.finalOutput);
|
|
82
|
+
}
|
|
83
|
+
const client = createClient(config);
|
|
84
|
+
const response = await client.messages.create({
|
|
85
|
+
model: getFastResponderModelId(config),
|
|
86
|
+
max_tokens: MAX_TOKENS,
|
|
87
|
+
output_config: {
|
|
88
|
+
format: zodOutputFormat(AlarmDecisionSchema),
|
|
89
|
+
effort: "low",
|
|
90
|
+
},
|
|
91
|
+
system: SYSTEM_PROMPT,
|
|
92
|
+
messages: [{ role: "user", content: userMessage }],
|
|
93
|
+
stream: false,
|
|
94
|
+
});
|
|
95
|
+
const text = response.content[0]?.type === "text" ? response.content[0].text : "";
|
|
96
|
+
return AlarmDecisionSchema.parse(JSON.parse(text));
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
logger.warn(`Tool alarm evaluator failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=tool-alarm-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-alarm-evaluator.js","sourceRoot":"","sources":["../../src/agent/tool-alarm-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,44 @@
|
|
|
1
|
+
import type { ActivityTracker } from "./activity-tracker.js";
|
|
2
|
+
import type { VisionClawConfig } from "../config/types.js";
|
|
1
3
|
/** Info about a tool call that was killed due to timeout. */
|
|
2
4
|
export interface ToolTimeoutInfo {
|
|
3
5
|
toolName: string;
|
|
4
6
|
toolUseId: string;
|
|
7
|
+
/** Truncated JSON of the tool input (for context injection). */
|
|
8
|
+
toolInput?: string;
|
|
5
9
|
elapsedMs: number;
|
|
6
10
|
browserRestarted: boolean;
|
|
11
|
+
/** When true the abort was decided by the smart alarm evaluator, not a hard timeout. */
|
|
12
|
+
smartAlarm?: boolean;
|
|
13
|
+
/** The reason provided by the evaluator (if smart alarm). */
|
|
14
|
+
smartAlarmReason?: string;
|
|
7
15
|
}
|
|
8
16
|
/**
|
|
9
|
-
* Monitors in-flight
|
|
10
|
-
* single call exceeds the timeout threshold.
|
|
17
|
+
* Monitors in-flight tool calls and aborts the query when a call appears stuck.
|
|
11
18
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `tool_progress` events.
|
|
15
|
-
* 2. Backup watchdog timer — a `setInterval` that catches hangs where
|
|
16
|
-
* `tool_progress` events stop being emitted entirely (e.g. CDP
|
|
17
|
-
* completely unresponsive).
|
|
19
|
+
* **Browser tools** (Playwright / computer_use): hard timeout at 120 s, then
|
|
20
|
+
* restart Chrome and abort.
|
|
18
21
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
22
|
+
* **All other tools**: after 30 s a "smart alarm" fires — a fast model decides
|
|
23
|
+
* whether to keep waiting or abort. Alarms repeat every 30 s for as long as
|
|
24
|
+
* the evaluator says "continue". A generous absolute ceiling
|
|
25
|
+
* ({@link ABSOLUTE_TIMEOUT_MS}, default 30 min) force-aborts as a last-resort
|
|
26
|
+
* safety net.
|
|
21
27
|
*/
|
|
22
28
|
export declare class ToolCallWatchdog {
|
|
23
29
|
private readonly onTimeout;
|
|
24
|
-
private readonly
|
|
30
|
+
private readonly config?;
|
|
31
|
+
private readonly activityTracker?;
|
|
32
|
+
private readonly browserTimeoutMs;
|
|
25
33
|
private readonly activeToolCalls;
|
|
26
34
|
private readonly watchdogTimer;
|
|
27
35
|
private result;
|
|
28
36
|
private triggerInProgress;
|
|
29
|
-
constructor(onTimeout: () => void,
|
|
37
|
+
constructor(onTimeout: () => void, config?: VisionClawConfig | undefined, activityTracker?: ActivityTracker | undefined, browserTimeoutMs?: number);
|
|
30
38
|
/** Whether a tool name is a browser-related tool (Playwright or computer_use). */
|
|
31
39
|
private isBrowserTool;
|
|
32
40
|
/** Record that a tool call has started. */
|
|
33
|
-
trackStart(toolUseId: string, toolName: string): void;
|
|
41
|
+
trackStart(toolUseId: string, toolName: string, toolInput?: string): void;
|
|
34
42
|
/** Record that a tool call has completed (success or error). */
|
|
35
43
|
trackEnd(toolUseId: string): void;
|
|
36
44
|
/**
|
|
@@ -45,18 +53,17 @@ export declare class ToolCallWatchdog {
|
|
|
45
53
|
/** Stop the watchdog timer. Must be called when the stream ends. */
|
|
46
54
|
dispose(): void;
|
|
47
55
|
/**
|
|
48
|
-
* Backup watchdog check: scans all active tool calls
|
|
49
|
-
*
|
|
56
|
+
* Backup watchdog check: scans all active tool calls.
|
|
57
|
+
* - Browser tools: hard timeout.
|
|
58
|
+
* - Other tools: smart alarm evaluation.
|
|
50
59
|
*/
|
|
51
60
|
private checkForTimeouts;
|
|
61
|
+
private triggerBrowserTimeout;
|
|
52
62
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* doesn't race with an in-progress browser restart. Uses
|
|
57
|
-
* `triggerInProgress` to prevent the race between the watchdog timer
|
|
58
|
-
* and `handleProgress` both entering this method concurrently.
|
|
63
|
+
* Fire a smart alarm if the non-browser tool call has exceeded the alarm
|
|
64
|
+
* interval. The alarm threshold is `GENERAL_ALARM_INTERVAL_MS * (alarmCount + 1)`
|
|
65
|
+
* so successive alarms are spaced evenly.
|
|
59
66
|
*/
|
|
60
|
-
private
|
|
67
|
+
private maybeFireSmartAlarm;
|
|
61
68
|
}
|
|
62
69
|
//# sourceMappingURL=tool-call-watchdog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-watchdog.d.ts","sourceRoot":"","sources":["../../src/agent/tool-call-watchdog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-call-watchdog.d.ts","sourceRoot":"","sources":["../../src/agent/tool-call-watchdog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA6B3D,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAYD;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,iBAAiB,CAAS;gBAGf,SAAS,EAAE,MAAM,IAAI,EACrB,MAAM,CAAC,EAAE,gBAAgB,YAAA,EACzB,eAAe,CAAC,EAAE,eAAe,YAAA,EACjC,gBAAgB,GAAE,MAAgC;IAWrE,kFAAkF;IAClF,OAAO,CAAC,aAAa;IAWrB,2CAA2C;IAC3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAUzE,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQjC;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAa7F,qEAAqE;IACrE,SAAS,IAAI,eAAe,GAAG,IAAI;IAInC,iFAAiF;IACjF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAQf;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;YAwBV,qBAAqB;IA8BnC;;;;OAIG;YACW,mBAAmB;CAkIlC"}
|
|
@@ -1,50 +1,86 @@
|
|
|
1
1
|
import { restartBrowser } from "./browser-launcher.js";
|
|
2
2
|
import { logger } from "../logger.js";
|
|
3
|
+
import { evaluateToolAlarm } from "./tool-alarm-evaluator.js";
|
|
4
|
+
/**
|
|
5
|
+
* Maximum time (ms) to wait for the evaluator API call before giving up.
|
|
6
|
+
* Prevents a hung evaluator from permanently blocking the alarm for a tool.
|
|
7
|
+
*/
|
|
8
|
+
const EVALUATOR_TIMEOUT_MS = 15_000;
|
|
3
9
|
/** Maximum time (ms) a single browser tool call may run before the query is aborted. */
|
|
4
|
-
const
|
|
10
|
+
const BROWSER_TOOL_TIMEOUT_MS = 120_000;
|
|
11
|
+
/**
|
|
12
|
+
* How long (ms) a non-browser tool call runs before the first smart alarm fires.
|
|
13
|
+
* After each alarm the evaluator decides whether to continue or abort.
|
|
14
|
+
*/
|
|
15
|
+
const GENERAL_ALARM_INTERVAL_MS = 30_000;
|
|
16
|
+
/**
|
|
17
|
+
* Absolute ceiling (ms) for any non-browser tool call. If the evaluator keeps
|
|
18
|
+
* saying "continue" past this point the call is force-aborted as a safety net.
|
|
19
|
+
* This is intentionally very generous (30 min) because legitimate operations
|
|
20
|
+
* like shell builds, large downloads, or batch processing can run for a long
|
|
21
|
+
* time.
|
|
22
|
+
*/
|
|
23
|
+
const ABSOLUTE_TIMEOUT_MS = 30 * 60 * 1000;
|
|
5
24
|
/** How often (ms) the backup watchdog checks for stale tool calls. */
|
|
6
25
|
const WATCHDOG_POLL_INTERVAL_MS = 15_000;
|
|
7
26
|
/**
|
|
8
|
-
* Monitors in-flight
|
|
9
|
-
* single call exceeds the timeout threshold.
|
|
27
|
+
* Monitors in-flight tool calls and aborts the query when a call appears stuck.
|
|
10
28
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* `tool_progress` events.
|
|
14
|
-
* 2. Backup watchdog timer — a `setInterval` that catches hangs where
|
|
15
|
-
* `tool_progress` events stop being emitted entirely (e.g. CDP
|
|
16
|
-
* completely unresponsive).
|
|
29
|
+
* **Browser tools** (Playwright / computer_use): hard timeout at 120 s, then
|
|
30
|
+
* restart Chrome and abort.
|
|
17
31
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
32
|
+
* **All other tools**: after 30 s a "smart alarm" fires — a fast model decides
|
|
33
|
+
* whether to keep waiting or abort. Alarms repeat every 30 s for as long as
|
|
34
|
+
* the evaluator says "continue". A generous absolute ceiling
|
|
35
|
+
* ({@link ABSOLUTE_TIMEOUT_MS}, default 30 min) force-aborts as a last-resort
|
|
36
|
+
* safety net.
|
|
20
37
|
*/
|
|
21
38
|
export class ToolCallWatchdog {
|
|
22
39
|
onTimeout;
|
|
23
|
-
|
|
40
|
+
config;
|
|
41
|
+
activityTracker;
|
|
42
|
+
browserTimeoutMs;
|
|
24
43
|
activeToolCalls = new Map();
|
|
25
44
|
watchdogTimer;
|
|
26
45
|
result = null;
|
|
27
46
|
triggerInProgress = false;
|
|
28
|
-
constructor(onTimeout,
|
|
47
|
+
constructor(onTimeout, config, activityTracker, browserTimeoutMs = BROWSER_TOOL_TIMEOUT_MS) {
|
|
29
48
|
this.onTimeout = onTimeout;
|
|
30
|
-
this.
|
|
49
|
+
this.config = config;
|
|
50
|
+
this.activityTracker = activityTracker;
|
|
51
|
+
this.browserTimeoutMs = browserTimeoutMs;
|
|
31
52
|
this.watchdogTimer = setInterval(() => {
|
|
32
53
|
this.checkForTimeouts();
|
|
33
54
|
}, WATCHDOG_POLL_INTERVAL_MS);
|
|
34
55
|
}
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Classification
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
35
59
|
/** Whether a tool name is a browser-related tool (Playwright or computer_use). */
|
|
36
60
|
isBrowserTool(name) {
|
|
37
61
|
return (name.startsWith("mcp__playwright__") ||
|
|
38
62
|
name.startsWith("mcp__visionclaw__computer_use_"));
|
|
39
63
|
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Tracking
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
40
67
|
/** Record that a tool call has started. */
|
|
41
|
-
trackStart(toolUseId, toolName) {
|
|
42
|
-
this.activeToolCalls.set(toolUseId, {
|
|
68
|
+
trackStart(toolUseId, toolName, toolInput) {
|
|
69
|
+
this.activeToolCalls.set(toolUseId, {
|
|
70
|
+
name: toolName,
|
|
71
|
+
startMs: Date.now(),
|
|
72
|
+
input: toolInput ?? "",
|
|
73
|
+
alarmCount: 0,
|
|
74
|
+
alarmInFlight: false,
|
|
75
|
+
});
|
|
43
76
|
}
|
|
44
77
|
/** Record that a tool call has completed (success or error). */
|
|
45
78
|
trackEnd(toolUseId) {
|
|
46
79
|
this.activeToolCalls.delete(toolUseId);
|
|
47
80
|
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Progress events (SDK `tool_progress`)
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
48
84
|
/**
|
|
49
85
|
* Handle a `tool_progress` SDK event. If the elapsed time exceeds
|
|
50
86
|
* the threshold for a browser tool, triggers the timeout.
|
|
@@ -52,13 +88,14 @@ export class ToolCallWatchdog {
|
|
|
52
88
|
handleProgress(toolUseId, toolName, elapsedSeconds) {
|
|
53
89
|
if (this.result)
|
|
54
90
|
return;
|
|
55
|
-
if (elapsedSeconds < this.timeoutMs / 1000)
|
|
56
|
-
return;
|
|
57
91
|
const name = toolName ?? "unknown";
|
|
58
|
-
if (this.isBrowserTool(name)) {
|
|
59
|
-
void this.
|
|
92
|
+
if (this.isBrowserTool(name) && elapsedSeconds >= this.browserTimeoutMs / 1000) {
|
|
93
|
+
void this.triggerBrowserTimeout(name, toolUseId, elapsedSeconds * 1000);
|
|
60
94
|
}
|
|
61
95
|
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Results
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
62
99
|
/** Return the timeout info if a timeout was triggered, or `null`. */
|
|
63
100
|
getResult() {
|
|
64
101
|
return this.result;
|
|
@@ -71,33 +108,37 @@ export class ToolCallWatchdog {
|
|
|
71
108
|
dispose() {
|
|
72
109
|
clearInterval(this.watchdogTimer);
|
|
73
110
|
}
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Periodic check
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
74
114
|
/**
|
|
75
|
-
* Backup watchdog check: scans all active tool calls
|
|
76
|
-
*
|
|
115
|
+
* Backup watchdog check: scans all active tool calls.
|
|
116
|
+
* - Browser tools: hard timeout.
|
|
117
|
+
* - Other tools: smart alarm evaluation.
|
|
77
118
|
*/
|
|
78
119
|
checkForTimeouts() {
|
|
79
120
|
if (this.result || this.triggerInProgress)
|
|
80
121
|
return;
|
|
81
122
|
const now = Date.now();
|
|
82
123
|
for (const [id, info] of this.activeToolCalls) {
|
|
83
|
-
if (!this.isBrowserTool(info.name))
|
|
84
|
-
continue;
|
|
85
124
|
const elapsed = now - info.startMs;
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
125
|
+
if (this.isBrowserTool(info.name)) {
|
|
126
|
+
// Browser tools: hard timeout
|
|
127
|
+
if (elapsed >= this.browserTimeoutMs) {
|
|
128
|
+
void this.triggerBrowserTimeout(info.name, id, elapsed);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Non-browser tools: smart alarm
|
|
134
|
+
void this.maybeFireSmartAlarm(id, info, elapsed);
|
|
89
135
|
}
|
|
90
136
|
}
|
|
91
137
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
* doesn't race with an in-progress browser restart. Uses
|
|
97
|
-
* `triggerInProgress` to prevent the race between the watchdog timer
|
|
98
|
-
* and `handleProgress` both entering this method concurrently.
|
|
99
|
-
*/
|
|
100
|
-
async trigger(toolName, toolUseId, elapsedMs) {
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
// Browser hard timeout (existing behavior)
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
async triggerBrowserTimeout(toolName, toolUseId, elapsedMs) {
|
|
101
142
|
if (this.result || this.triggerInProgress)
|
|
102
143
|
return;
|
|
103
144
|
this.triggerInProgress = true;
|
|
@@ -113,5 +154,117 @@ export class ToolCallWatchdog {
|
|
|
113
154
|
this.result = { toolName, toolUseId, elapsedMs, browserRestarted };
|
|
114
155
|
this.onTimeout();
|
|
115
156
|
}
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
// Smart alarm for non-browser tools
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
/**
|
|
161
|
+
* Fire a smart alarm if the non-browser tool call has exceeded the alarm
|
|
162
|
+
* interval. The alarm threshold is `GENERAL_ALARM_INTERVAL_MS * (alarmCount + 1)`
|
|
163
|
+
* so successive alarms are spaced evenly.
|
|
164
|
+
*/
|
|
165
|
+
async maybeFireSmartAlarm(toolUseId, info, elapsedMs) {
|
|
166
|
+
// Absolute safety net FIRST: force-abort after ABSOLUTE_TIMEOUT_MS
|
|
167
|
+
// regardless of evaluator decisions or in-flight evaluations. This must
|
|
168
|
+
// be checked before `alarmInFlight` so a hung evaluator cannot prevent
|
|
169
|
+
// the safety ceiling from firing.
|
|
170
|
+
if (elapsedMs >= ABSOLUTE_TIMEOUT_MS) {
|
|
171
|
+
const elapsedMin = Math.round(elapsedMs / 60_000);
|
|
172
|
+
logger.err(`Smart alarm force-abort: ${info.name} (${toolUseId}) after ${elapsedMin}min (absolute ceiling) — aborting query`);
|
|
173
|
+
this.triggerInProgress = true;
|
|
174
|
+
this.result = {
|
|
175
|
+
toolName: info.name,
|
|
176
|
+
toolUseId,
|
|
177
|
+
toolInput: info.input,
|
|
178
|
+
elapsedMs,
|
|
179
|
+
browserRestarted: false,
|
|
180
|
+
smartAlarm: true,
|
|
181
|
+
smartAlarmReason: `Force-aborted after ${elapsedMin} minutes (absolute safety ceiling).`,
|
|
182
|
+
};
|
|
183
|
+
this.onTimeout();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Not yet time for the next alarm?
|
|
187
|
+
const nextAlarmAt = GENERAL_ALARM_INTERVAL_MS * (info.alarmCount + 1);
|
|
188
|
+
if (elapsedMs < nextAlarmAt)
|
|
189
|
+
return;
|
|
190
|
+
// Already evaluating or already triggered?
|
|
191
|
+
if (info.alarmInFlight || this.result || this.triggerInProgress)
|
|
192
|
+
return;
|
|
193
|
+
// If we don't have config we can't call the evaluator -- just log and let
|
|
194
|
+
// the absolute timeout ceiling handle it.
|
|
195
|
+
if (!this.config) {
|
|
196
|
+
info.alarmCount++;
|
|
197
|
+
logger.warn(`Smart alarm #${info.alarmCount} for ${info.name} (${toolUseId}) at ${Math.round(elapsedMs / 1000)}s — no config, skipping evaluator (absolute ceiling: ${Math.round(ABSOLUTE_TIMEOUT_MS / 60_000)}min)`);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
info.alarmInFlight = true;
|
|
201
|
+
info.alarmCount++;
|
|
202
|
+
const alarmNumber = info.alarmCount;
|
|
203
|
+
const elapsedSec = Math.round(elapsedMs / 1000);
|
|
204
|
+
logger.system(`Smart alarm #${alarmNumber} for ${info.name} (${toolUseId}) at ${elapsedSec}s — evaluating…`);
|
|
205
|
+
const context = {
|
|
206
|
+
toolName: info.name,
|
|
207
|
+
toolInput: info.input,
|
|
208
|
+
elapsedSeconds: elapsedSec,
|
|
209
|
+
alarmCount: alarmNumber,
|
|
210
|
+
absoluteTimeoutSeconds: Math.round(ABSOLUTE_TIMEOUT_MS / 1000),
|
|
211
|
+
activitySummary: this.activityTracker?.getSummary() ?? "(not available)",
|
|
212
|
+
};
|
|
213
|
+
let fallbackTimer;
|
|
214
|
+
try {
|
|
215
|
+
const decision = await Promise.race([
|
|
216
|
+
evaluateToolAlarm(context, this.config),
|
|
217
|
+
new Promise((resolve) => {
|
|
218
|
+
fallbackTimer = setTimeout(() => {
|
|
219
|
+
logger.warn(`Smart alarm #${alarmNumber} for ${info.name}: evaluator timed out after ${EVALUATOR_TIMEOUT_MS / 1000}s`);
|
|
220
|
+
resolve(null);
|
|
221
|
+
}, EVALUATOR_TIMEOUT_MS);
|
|
222
|
+
}),
|
|
223
|
+
]);
|
|
224
|
+
clearTimeout(fallbackTimer);
|
|
225
|
+
// Check if the tool already completed while we were evaluating
|
|
226
|
+
if (!this.activeToolCalls.has(toolUseId)) {
|
|
227
|
+
logger.system(`Smart alarm #${alarmNumber} for ${info.name}: tool completed during evaluation — ignoring decision`);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
// Re-check after async gap: another alarm or the browser watchdog may
|
|
231
|
+
// have triggered while we were awaiting the evaluator.
|
|
232
|
+
if (this.result || this.triggerInProgress)
|
|
233
|
+
return;
|
|
234
|
+
if (decision === null) {
|
|
235
|
+
// Evaluator failed — default to continue
|
|
236
|
+
logger.warn(`Smart alarm #${alarmNumber} for ${info.name}: evaluator returned null — defaulting to continue`);
|
|
237
|
+
}
|
|
238
|
+
else if (decision.decision === "abort") {
|
|
239
|
+
logger.err(`Smart alarm #${alarmNumber} for ${info.name}: ABORT — ${decision.reason}`);
|
|
240
|
+
this.triggerInProgress = true;
|
|
241
|
+
this.result = {
|
|
242
|
+
toolName: info.name,
|
|
243
|
+
toolUseId,
|
|
244
|
+
toolInput: info.input,
|
|
245
|
+
elapsedMs: Date.now() - info.startMs,
|
|
246
|
+
browserRestarted: false,
|
|
247
|
+
smartAlarm: true,
|
|
248
|
+
smartAlarmReason: decision.reason,
|
|
249
|
+
};
|
|
250
|
+
this.onTimeout();
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
logger.system(`Smart alarm #${alarmNumber} for ${info.name}: CONTINUE — ${decision.reason}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
clearTimeout(fallbackTimer);
|
|
258
|
+
logger.warn(`Smart alarm #${alarmNumber} evaluation error: ${err instanceof Error ? err.message : String(err)} — defaulting to continue`);
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
// Only clear the flag if the tracked call still exists (it may have been
|
|
262
|
+
// deleted by trackEnd while the evaluation was in flight).
|
|
263
|
+
const current = this.activeToolCalls.get(toolUseId);
|
|
264
|
+
if (current) {
|
|
265
|
+
current.alarmInFlight = false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
116
269
|
}
|
|
117
270
|
//# sourceMappingURL=tool-call-watchdog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-watchdog.js","sourceRoot":"","sources":["../../src/agent/tool-call-watchdog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-call-watchdog.js","sourceRoot":"","sources":["../../src/agent/tool-call-watchdog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,2BAA2B,CAAC;AAIrF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,wFAAwF;AACxF,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAExC;;;GAGG;AACH,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3C,sEAAsE;AACtE,MAAM,yBAAyB,GAAG,MAAM,CAAC;AA0BzC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAgB;IAOR;IACA;IACA;IACA;IATF,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IACrD,aAAa,CAAiC;IACvD,MAAM,GAA2B,IAAI,CAAC;IACtC,iBAAiB,GAAG,KAAK,CAAC;IAElC,YACmB,SAAqB,EACrB,MAAyB,EACzB,eAAiC,EACjC,mBAA2B,uBAAuB;QAHlD,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAmB;QACzB,oBAAe,GAAf,eAAe,CAAkB;QACjC,qBAAgB,GAAhB,gBAAgB,CAAkC;QAEnE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAChC,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E,kFAAkF;IAC1E,aAAa,CAAC,IAAY;QAChC,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAClD,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAE9E,2CAA2C;IAC3C,UAAU,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAkB;QAChE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;YAClC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,KAAK,EAAE,SAAS,IAAI,EAAE;YACtB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,QAAQ,CAAC,SAAiB;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,8EAA8E;IAC9E,wCAAwC;IACxC,8EAA8E;IAE9E;;;OAGG;IACH,cAAc,CAAC,SAAiB,EAAE,QAA4B,EAAE,cAAsB;QACpF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,IAAI,GAAG,QAAQ,IAAI,SAAS,CAAC;QAEnC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC;YAC/E,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAE9E,qEAAqE;IACrE,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,iFAAiF;IACjF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,oEAAoE;IACpE,OAAO;QACL,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E;;;;OAIG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YAEnC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,8BAA8B;gBAC9B,IAAI,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACrC,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,KAAK,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,2CAA2C;IAC3C,8EAA8E;IAEtE,KAAK,CAAC,qBAAqB,CACjC,QAAgB,EAChB,SAAiB,EACjB,SAAiB;QAEjB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,MAAM,CAAC,GAAG,CACR,sBAAsB,QAAQ,KAAK,SAAS,WAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CACxG,CAAC;QAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,cAAc,EAAE,CAAC;YACvB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CACT,yCAAyC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,8EAA8E;IAC9E,oCAAoC;IACpC,8EAA8E;IAE9E;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAC/B,SAAiB,EACjB,IAAqB,EACrB,SAAiB;QAEjB,mEAAmE;QACnE,yEAAyE;QACzE,uEAAuE;QACvE,kCAAkC;QAClC,IAAI,SAAS,IAAI,mBAAmB,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CACR,4BAA4B,IAAI,CAAC,IAAI,KAAK,SAAS,WAAW,UAAU,yCAAyC,CAClH,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG;gBACZ,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,KAAK;gBACrB,SAAS;gBACT,gBAAgB,EAAE,KAAK;gBACvB,UAAU,EAAE,IAAI;gBAChB,gBAAgB,EAAE,uBAAuB,UAAU,qCAAqC;aACzF,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,yBAAyB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,SAAS,GAAG,WAAW;YAAE,OAAO;QAEpC,2CAA2C;QAC3C,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAExE,0EAA0E;QAC1E,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CACT,gBAAgB,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,IAAI,KAAK,SAAS,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,wDAAwD,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CACzM,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CACX,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,KAAK,SAAS,QAAQ,UAAU,iBAAiB,CAC9F,CAAC;QAEF,MAAM,OAAO,GAAqB;YAChC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,cAAc,EAAE,UAAU;YAC1B,UAAU,EAAE,WAAW;YACvB,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAC9D,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,iBAAiB;SACzE,CAAC;QAEF,IAAI,aAAwD,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAClC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBACvC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC9B,MAAM,CAAC,IAAI,CACT,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,+BAA+B,oBAAoB,GAAG,IAAI,GAAG,CAC1G,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,EAAE,oBAAoB,CAAC,CAAC;gBAC3B,CAAC,CAAC;aACH,CAAC,CAAC;YACH,YAAY,CAAC,aAAa,CAAC,CAAC;YAE5B,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,CACX,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,wDAAwD,CACrG,CAAC;gBACF,OAAO;YACT,CAAC;YAED,sEAAsE;YACtE,uDAAuD;YACvD,IAAI,IAAI,CAAC,MAAgC,IAAI,IAAI,CAAC,iBAA4B;gBAAE,OAAO;YAEvF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,yCAAyC;gBACzC,MAAM,CAAC,IAAI,CACT,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,oDAAoD,CACjG,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,CACR,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,aAAa,QAAQ,CAAC,MAAM,EAAE,CAC3E,CAAC;gBACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,MAAM,GAAG;oBACZ,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,SAAS;oBACT,SAAS,EAAE,IAAI,CAAC,KAAK;oBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO;oBACpC,gBAAgB,EAAE,KAAK;oBACvB,UAAU,EAAE,IAAI;oBAChB,gBAAgB,EAAE,QAAQ,CAAC,MAAM;iBAClC,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CACX,gBAAgB,WAAW,QAAQ,IAAI,CAAC,IAAI,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,gBAAgB,WAAW,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAC7H,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,yEAAyE;YACzE,2DAA2D;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake-cycle-runner.d.ts","sourceRoot":"","sources":["../../src/agent/wake-cycle-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAgEzD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAE/B,IAAI,EAAE,mBAAmB;IAIrC;;;;;;;;;;OAUG;IACG,GAAG,CACP,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,EAAE,SAAS,GAAG,WAAW,EAChC,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"wake-cycle-runner.d.ts","sourceRoot":"","sources":["../../src/agent/wake-cycle-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAgEzD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAE/B,IAAI,EAAE,mBAAmB;IAIrC;;;;;;;;;;OAUG;IACG,GAAG,CACP,aAAa,EAAE,YAAY,EAAE,EAC7B,OAAO,EAAE,SAAS,GAAG,WAAW,EAChC,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,eAAe,CAAC;IAmN3B;;;;;;;OAOG;YACW,WAAW;CA8F1B"}
|
|
@@ -133,14 +133,21 @@ export class WakeCycleRunner {
|
|
|
133
133
|
session.ackMemosForActive();
|
|
134
134
|
pendingMemoAck = false;
|
|
135
135
|
}
|
|
136
|
-
const toolTimeout = await processAgentStream(queryStream, activeSession, activityTracker, session.dualSessionEnabled ? session : undefined);
|
|
136
|
+
const toolTimeout = await processAgentStream(queryStream, activeSession, activityTracker, session.dualSessionEnabled ? session : undefined, config);
|
|
137
137
|
if (toolTimeout) {
|
|
138
138
|
const elapsedSec = Math.round(toolTimeout.elapsedMs / 1000);
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
toolTimeout.
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
const timeoutMsgParts = [];
|
|
140
|
+
if (toolTimeout.smartAlarm) {
|
|
141
|
+
timeoutMsgParts.push(`Your previous tool call was aborted by the watchdog after ${elapsedSec}s:`, ` Tool: ${toolTimeout.toolName}`, ` Input: ${toolTimeout.toolInput ? (toolTimeout.toolInput.length > 300 ? toolTimeout.toolInput.substring(0, 300) + "\u2026" : toolTimeout.toolInput) : "(unknown)"}`, ` Duration: ${elapsedSec}s`, ` Reason: ${toolTimeout.smartAlarmReason ?? "took too long and appeared stuck"}`, "", "The tool call did not return a result. You should either:", " 1. Retry the same operation (the issue may have been transient), or", " 2. Take an alternative approach (e.g. different URL, smaller payload, different command).", "Do NOT silently ignore this — inform the user if the failed operation was part of their request.");
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
timeoutMsgParts.push(`Tool call timeout: ${toolTimeout.toolName} (${toolTimeout.toolUseId}) was killed after ${elapsedSec}s.`);
|
|
145
|
+
if (toolTimeout.browserRestarted) {
|
|
146
|
+
timeoutMsgParts.push("Browser (Chrome/CDP) has been restarted.");
|
|
147
|
+
}
|
|
148
|
+
timeoutMsgParts.push("The query was aborted. You may retry the operation or take an alternative approach.");
|
|
149
|
+
}
|
|
150
|
+
const timeoutMsg = timeoutMsgParts.join("\n");
|
|
144
151
|
messageQueue.enqueue({
|
|
145
152
|
id: `timeout_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
|
|
146
153
|
channel: "system",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake-cycle-runner.js","sourceRoot":"","sources":["../../src/agent/wake-cycle-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wake-cycle-runner.js","sourceRoot":"","sources":["../../src/agent/wake-cycle-runner.ts"],"names":[],"mappings":"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"}
|