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.
Files changed (78) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/assets/visionclaw_pricing.jpeg +0 -0
  3. package/dist/agent/command-handlers.d.ts +2 -0
  4. package/dist/agent/command-handlers.d.ts.map +1 -1
  5. package/dist/agent/command-handlers.js +63 -3
  6. package/dist/agent/command-handlers.js.map +1 -1
  7. package/dist/agent/heartbeat-manager.d.ts +10 -0
  8. package/dist/agent/heartbeat-manager.d.ts.map +1 -1
  9. package/dist/agent/heartbeat-manager.js +9 -0
  10. package/dist/agent/heartbeat-manager.js.map +1 -1
  11. package/dist/agent/loop.d.ts.map +1 -1
  12. package/dist/agent/loop.js +1 -0
  13. package/dist/agent/loop.js.map +1 -1
  14. package/dist/agent/stream-handler.d.ts +2 -1
  15. package/dist/agent/stream-handler.d.ts.map +1 -1
  16. package/dist/agent/stream-handler.js +4 -5
  17. package/dist/agent/stream-handler.js.map +1 -1
  18. package/dist/agent/subscription-gate.d.ts +1 -1
  19. package/dist/agent/subscription-gate.d.ts.map +1 -1
  20. package/dist/agent/subscription-gate.js +7 -3
  21. package/dist/agent/subscription-gate.js.map +1 -1
  22. package/dist/agent/tool-alarm-evaluator.d.ts +37 -0
  23. package/dist/agent/tool-alarm-evaluator.d.ts.map +1 -0
  24. package/dist/agent/tool-alarm-evaluator.js +103 -0
  25. package/dist/agent/tool-alarm-evaluator.js.map +1 -0
  26. package/dist/agent/tool-call-watchdog.d.ts +29 -22
  27. package/dist/agent/tool-call-watchdog.d.ts.map +1 -1
  28. package/dist/agent/tool-call-watchdog.js +189 -36
  29. package/dist/agent/tool-call-watchdog.js.map +1 -1
  30. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  31. package/dist/agent/wake-cycle-runner.js +13 -6
  32. package/dist/agent/wake-cycle-runner.js.map +1 -1
  33. package/dist/builtin-skills/visionclaw-manual/SKILL.md +17 -0
  34. package/dist/channels/interface.d.ts +8 -0
  35. package/dist/channels/interface.d.ts.map +1 -1
  36. package/dist/channels/manager.d.ts.map +1 -1
  37. package/dist/channels/manager.js +3 -0
  38. package/dist/channels/manager.js.map +1 -1
  39. package/dist/channels/telegram.d.ts.map +1 -1
  40. package/dist/channels/telegram.js +27 -22
  41. package/dist/channels/telegram.js.map +1 -1
  42. package/dist/config/index.d.ts +5 -0
  43. package/dist/config/index.d.ts.map +1 -1
  44. package/dist/config/index.js +8 -0
  45. package/dist/config/index.js.map +1 -1
  46. package/dist/config/types.d.ts +0 -3
  47. package/dist/config/types.d.ts.map +1 -1
  48. package/dist/config/types.js +0 -3
  49. package/dist/config/types.js.map +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/onboarding/bot-profile.d.ts.map +1 -1
  52. package/dist/onboarding/bot-profile.js +1 -0
  53. package/dist/onboarding/bot-profile.js.map +1 -1
  54. package/dist/onboarding/index.d.ts.map +1 -1
  55. package/dist/onboarding/index.js +0 -31
  56. package/dist/onboarding/index.js.map +1 -1
  57. package/dist/onboarding/onboarding-service-client.d.ts +10 -0
  58. package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
  59. package/dist/onboarding/onboarding-service-client.js +22 -0
  60. package/dist/onboarding/onboarding-service-client.js.map +1 -1
  61. package/dist/onboarding/prepare-mac.js +2 -2
  62. package/dist/onboarding/prepare-mac.js.map +1 -1
  63. package/dist/onboarding/provisioning-spec.d.ts +0 -6
  64. package/dist/onboarding/provisioning-spec.d.ts.map +1 -1
  65. package/dist/onboarding/provisioning-spec.js +0 -7
  66. package/dist/onboarding/provisioning-spec.js.map +1 -1
  67. package/dist/onboarding/setup-state.d.ts +0 -1
  68. package/dist/onboarding/setup-state.d.ts.map +1 -1
  69. package/dist/onboarding/setup-state.js +0 -1
  70. package/dist/onboarding/setup-state.js.map +1 -1
  71. package/dist/onboarding/setup-steps.d.ts.map +1 -1
  72. package/dist/onboarding/setup-steps.js +0 -28
  73. package/dist/onboarding/setup-steps.js.map +1 -1
  74. package/dist/utils/restart.d.ts.map +1 -1
  75. package/dist/utils/restart.js +18 -7
  76. package/dist/utils/restart.js.map +1 -1
  77. package/dist-agent/bundle.cjs +2335 -2451
  78. 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 browser tool calls and aborts the query if any
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
- * Two complementary detection mechanisms:
13
- * 1. `handleProgress()` checks the SDK's `elapsed_time_seconds` from
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
- * On timeout the watchdog restarts Chrome and calls `onTimeout` so the
20
- * caller can abort the query.
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 timeoutMs;
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, timeoutMs?: number);
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 and triggers
49
- * a timeout for the first browser tool that has exceeded the threshold.
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
- * Abort due to a browser tool call timeout.
54
- *
55
- * Restarts Chrome before calling `onTimeout` so the next wake cycle
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 trigger;
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":"AAQA,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwD;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,iBAAiB,CAAS;gBAGf,SAAS,EAAE,MAAM,IAAI,EACrB,SAAS,GAAE,MAA6B;IAO3D,kFAAkF;IAClF,OAAO,CAAC,aAAa;IAOrB,2CAA2C;IAC3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrD,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIjC;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAU7F,qEAAqE;IACrE,SAAS,IAAI,eAAe,GAAG,IAAI;IAInC,iFAAiF;IACjF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;OAOG;YACW,OAAO;CAqBtB"}
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 TOOL_CALL_TIMEOUT_MS = 120_000;
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 browser tool calls and aborts the query if any
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
- * Two complementary detection mechanisms:
12
- * 1. `handleProgress()` checks the SDK's `elapsed_time_seconds` from
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
- * On timeout the watchdog restarts Chrome and calls `onTimeout` so the
19
- * caller can abort the query.
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
- timeoutMs;
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, timeoutMs = TOOL_CALL_TIMEOUT_MS) {
47
+ constructor(onTimeout, config, activityTracker, browserTimeoutMs = BROWSER_TOOL_TIMEOUT_MS) {
29
48
  this.onTimeout = onTimeout;
30
- this.timeoutMs = timeoutMs;
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, { name: toolName, startMs: Date.now() });
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.trigger(name, toolUseId, elapsedSeconds * 1000);
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 and triggers
76
- * a timeout for the first browser tool that has exceeded the threshold.
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 (elapsed >= this.timeoutMs) {
87
- void this.trigger(info.name, id, elapsed);
88
- break;
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
- * Abort due to a browser tool call timeout.
94
- *
95
- * Restarts Chrome before calling `onTimeout` so the next wake cycle
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":"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"}
1
+ {"version":3,"file":"tool-call-watchdog.js","sourceRoot":"","sources":["../../src/agent/tool-call-watchdog.ts"],"names":[],"mappings":"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"}
@@ -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;IA2L3B;;;;;;;OAOG;YACW,WAAW;CA8F1B"}
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 timeoutMsg = [
140
- `[System] Tool call timeout: ${toolTimeout.toolName} (${toolTimeout.toolUseId}) was killed after ${elapsedSec}s.`,
141
- toolTimeout.browserRestarted ? "Browser (Chrome/CDP) has been restarted." : "",
142
- "The query was aborted. You may retry the operation or take an alternative approach.",
143
- ].filter(Boolean).join(" ");
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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"}