visionclaw 0.1.187-beta.9 → 0.1.187-dev.refactor-computer-use-direct-coordinates.1

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.
@@ -1,24 +1,19 @@
1
1
  /**
2
2
  * Computer use MCP tools for desktop interaction.
3
- * Each tool: screenshot -> resolve coordinates (if needed) -> execute -> result screenshot.
3
+ * Each coordinate-based tool: scale screenshot coords display coords execute result screenshot.
4
+ *
5
+ * The model sees resized screenshots and outputs pixel positions in that
6
+ * image space. The execution layer scales from screenshot coords to actual
7
+ * display resolution, mirroring the android-use pattern.
4
8
  */
5
9
  import { z } from "zod";
6
10
  import { tool } from "@anthropic-ai/claude-agent-sdk";
7
11
  import { captureScreen, getDisplaySize, isDisplaySizeInitialized, click, doubleClick, rightClick, moveTo, drag, typeText, pressKey, scroll, } from "./desktop-executor-factory.js";
8
- import { resolveCoordinates } from "./coordinate-resolver.js";
9
- import { takeScreenshot } from "./screenshot.js";
12
+ import { takeScreenshot, getVisionScaleFactor } from "./screenshot.js";
10
13
  import { logger } from "../logger.js";
11
14
  /**
12
15
  * Gate every computer_use entry point on (a) a supported platform and
13
16
  * (b) a successfully-detected display size.
14
- *
15
- * The display-size check is load-bearing: every coordinate the tools
16
- * compute — click targets, drag endpoints, vision-resolver scaling —
17
- * depends on the real display dimensions. With a wrong or guessed size
18
- * the agent silently clicks the wrong pixels, which is worse than
19
- * refusing the call. When display-size detection fails at startup,
20
- * `initDisplaySize()` leaves the cache empty; every computer_use tool
21
- * then short-circuits with this error instead of running.
22
17
  */
23
18
  function requireDesktop() {
24
19
  if (process.platform !== "darwin" && process.platform !== "win32") {
@@ -40,249 +35,148 @@ function requireDesktop() {
40
35
  }
41
36
  return null;
42
37
  }
43
- let cachedConfig = null;
44
- async function getConfig() {
45
- if (cachedConfig)
46
- return cachedConfig;
47
- const { loadConfig } = await import("../config/index.js");
48
- try {
49
- cachedConfig = loadConfig();
50
- return cachedConfig;
51
- }
52
- catch {
53
- if (process.env.ANTHROPIC_API_KEY) {
54
- cachedConfig = {
55
- model: "claude-sonnet-4-6",
56
- provider: "anthropic",
57
- anthropicApiKey: process.env.ANTHROPIC_API_KEY,
58
- };
59
- return cachedConfig;
60
- }
61
- return null;
62
- }
38
+ // ── Coordinate helpers (mirror android-use pattern) ─────────────────
39
+ /**
40
+ * Compute the expected screenshot image dimensions after vision resize.
41
+ * The screenshot pipeline resizes the raw capture to fit Claude's vision
42
+ * constraints. This computes those dimensions deterministically from the
43
+ * display resolution so we can map coordinates without reading the image.
44
+ */
45
+ export function getScreenshotSize(displaySize) {
46
+ const scale = getVisionScaleFactor(displaySize.width, displaySize.height);
47
+ if (scale >= 1.0)
48
+ return { ...displaySize };
49
+ return {
50
+ width: Math.max(1, Math.round(displaySize.width * scale)),
51
+ height: Math.max(1, Math.round(displaySize.height * scale)),
52
+ };
63
53
  }
64
- async function resolveAndExecute(instruction, config, fn) {
65
- const { base64: screenshot, filePath: screenshotPath } = await captureScreen();
66
- const size = getDisplaySize();
67
- const resolved = await resolveCoordinates(screenshot, instruction, size.width, size.height, config, screenshotPath);
68
- if (!resolved) {
69
- return {
70
- content: [
71
- {
72
- type: "text",
73
- text: `Could not resolve coordinates for: ${instruction}. Please try again with a clearer instruction.`,
74
- },
75
- ],
76
- isError: true,
77
- };
78
- }
79
- await fn(resolved.x, resolved.y);
80
- // wait for 1 second
81
- await new Promise((resolve) => setTimeout(resolve, 1000));
54
+ /**
55
+ * Convert pixel coordinates in screenshot space to absolute display coordinates.
56
+ * The model outputs coordinates based on the resized screenshot it sees;
57
+ * we scale them to the actual display resolution for input events.
58
+ */
59
+ export function screenshotToDisplay(point, screenshotSize, displaySize) {
60
+ return {
61
+ x: Math.round((point.x / screenshotSize.width) * displaySize.width),
62
+ y: Math.round((point.y / screenshotSize.height) * displaySize.height),
63
+ };
64
+ }
65
+ /** Zod schema for a pixel coordinate point in the screenshot image. */
66
+ const pointSchema = z.object({
67
+ x: z
68
+ .number()
69
+ .min(0)
70
+ .describe("X pixel coordinate in the screenshot image (0 = left edge)"),
71
+ y: z
72
+ .number()
73
+ .min(0)
74
+ .describe("Y pixel coordinate in the screenshot image (0 = top edge)"),
75
+ });
76
+ /**
77
+ * Capture a post-action screenshot and return a standard result.
78
+ */
79
+ async function actionResult(text, delayMs = 1000) {
80
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
82
81
  const { base64: resultScreenshot } = await captureScreen();
83
82
  logger.screenshot(resultScreenshot);
84
83
  return {
85
84
  content: [
86
- { type: "text", text: `Executed at (${resolved.x}, ${resolved.y})` },
85
+ { type: "text", text },
87
86
  {
88
87
  type: "image",
89
88
  data: resultScreenshot,
90
89
  mimeType: "image/png",
91
- }
90
+ },
92
91
  ],
93
92
  };
94
93
  }
95
- export const computerUseClickTool = tool("computer_use_click", "Click on a UI element described in natural language (e.g. 'the Chrome icon', 'the submit button'). Resolves target via AI, then performs left/right/double-click.", {
96
- target: z.string().describe("Natural language description of the element to click"),
94
+ /** Wrap a tool handler with desktop check and error handling. */
95
+ function withDesktopCheck(toolName, fn) {
96
+ return (async () => {
97
+ const err = requireDesktop();
98
+ if (err)
99
+ return err;
100
+ try {
101
+ return await fn();
102
+ }
103
+ catch (e) {
104
+ logger.err(`${toolName} failed`, { error: String(e) });
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: `${toolName} failed: ${e instanceof Error ? e.message : String(e)}`,
110
+ },
111
+ ],
112
+ isError: true,
113
+ };
114
+ }
115
+ })();
116
+ }
117
+ export const computerUseClickTool = tool("computer_use_click", "Click at a point on the desktop screen. Coordinates are pixel positions in the screenshot image returned by computer_use_screenshot. Supports left-click, right-click, and double-click.", {
118
+ point: pointSchema.describe("Pixel coordinates in the screenshot image to click"),
97
119
  button: z.enum(["left", "right", "double"]).optional().default("left"),
98
120
  }, async (args) => {
99
- const err = requireDesktop();
100
- if (err)
101
- return err;
102
- const cfg = await getConfig();
103
- if (!cfg) {
104
- return {
105
- content: [{ type: "text", text: "Claude API credentials not configured" }],
106
- isError: true,
107
- };
108
- }
109
- const instruction = args.button === "right"
110
- ? `Right-click on: ${args.target}`
111
- : args.button === "double"
112
- ? `Double-click on: ${args.target}`
113
- : `Click on: ${args.target}`;
114
- const fn = args.button === "right"
115
- ? (x, y) => rightClick(x, y)
116
- : args.button === "double"
117
- ? (x, y) => doubleClick(x, y)
118
- : (x, y) => click(x, y);
119
- try {
120
- return await resolveAndExecute(instruction, cfg, fn);
121
- }
122
- catch (e) {
123
- logger.err("computer_use_click failed", { error: String(e) });
124
- return {
125
- content: [
126
- {
127
- type: "text",
128
- text: `computer_use_click failed: ${e instanceof Error ? e.message : String(e)}`,
129
- },
130
- ],
131
- isError: true,
132
- };
133
- }
121
+ return withDesktopCheck("computer_use_click", async () => {
122
+ const displaySize = getDisplaySize();
123
+ const ssSize = getScreenshotSize(displaySize);
124
+ const abs = screenshotToDisplay(args.point, ssSize, displaySize);
125
+ if (args.button === "right") {
126
+ await rightClick(abs.x, abs.y);
127
+ }
128
+ else if (args.button === "double") {
129
+ await doubleClick(abs.x, abs.y);
130
+ }
131
+ else {
132
+ await click(abs.x, abs.y);
133
+ }
134
+ return actionResult(`${args.button === "double" ? "Double-clicked" : args.button === "right" ? "Right-clicked" : "Clicked"} at screenshot (${Math.round(args.point.x)}, ${Math.round(args.point.y)}) → display (${abs.x}, ${abs.y})`);
135
+ });
134
136
  });
135
- export const computerUseMoveTool = tool("computer_use_move", "Move the mouse cursor to a UI element described in natural language (e.g. 'the search bar', 'the file menu'). Resolves target via AI, then moves cursor without clicking.", {
136
- target: z.string().describe("Natural language description of the element to move the cursor to"),
137
+ export const computerUseMoveTool = tool("computer_use_move", "Move the mouse cursor to a point on the desktop screen. Coordinates are pixel positions in the screenshot image.", {
138
+ point: pointSchema.describe("Pixel coordinates in the screenshot image to move the cursor to"),
137
139
  }, async (args) => {
138
- const err = requireDesktop();
139
- if (err)
140
- return err;
141
- const cfg = await getConfig();
142
- if (!cfg) {
143
- return {
144
- content: [{ type: "text", text: "Claude API credentials not configured" }],
145
- isError: true,
146
- };
147
- }
148
- const instruction = `Move cursor to the center of: ${args.target}`;
149
- try {
150
- return await resolveAndExecute(instruction, cfg, async (x, y) => {
151
- await moveTo(x, y);
152
- });
153
- }
154
- catch (e) {
155
- logger.err("computer_use_move failed", { error: String(e) });
156
- return {
157
- content: [
158
- {
159
- type: "text",
160
- text: `computer_use_move failed: ${e instanceof Error ? e.message : String(e)}`,
161
- },
162
- ],
163
- isError: true,
164
- };
165
- }
140
+ return withDesktopCheck("computer_use_move", async () => {
141
+ const displaySize = getDisplaySize();
142
+ const ssSize = getScreenshotSize(displaySize);
143
+ const abs = screenshotToDisplay(args.point, ssSize, displaySize);
144
+ await moveTo(abs.x, abs.y);
145
+ return actionResult(`Moved cursor to screenshot (${Math.round(args.point.x)}, ${Math.round(args.point.y)}) → display (${abs.x}, ${abs.y})`);
146
+ });
166
147
  });
167
- export const computerUseScrollTool = tool("computer_use_scroll", "Scroll at a target location in a direction. Resolves the scroll target via AI, then scrolls.", {
168
- target: z.string().describe("Natural language description of where to scroll"),
148
+ export const computerUseScrollTool = tool("computer_use_scroll", "Scroll at a point on the desktop screen in a direction. Coordinates are pixel positions in the screenshot image.", {
149
+ point: pointSchema.describe("Pixel coordinates in the screenshot image for scroll origin"),
169
150
  direction: z.enum(["up", "down", "left", "right"]),
170
151
  amount: z.number().optional().default(3).describe("Scroll amount (default 3)"),
171
152
  }, async (args) => {
172
- const err = requireDesktop();
173
- if (err)
174
- return err;
175
- const cfg = await getConfig();
176
- if (!cfg) {
177
- return {
178
- content: [{ type: "text", text: "Claude API credentials not configured" }],
179
- isError: true,
180
- };
181
- }
182
- const instruction = `Move cursor to the center of: ${args.target} (for scrolling)`;
183
- const amount = args.amount;
184
- try {
185
- return await resolveAndExecute(instruction, cfg, async (x, y) => {
186
- await scroll(x, y, args.direction, amount);
187
- });
188
- }
189
- catch (e) {
190
- logger.err("computer_use_scroll failed", { error: String(e) });
191
- return {
192
- content: [
193
- {
194
- type: "text",
195
- text: `computer_use_scroll failed: ${e instanceof Error ? e.message : String(e)}`,
196
- },
197
- ],
198
- isError: true,
199
- };
200
- }
153
+ return withDesktopCheck("computer_use_scroll", async () => {
154
+ const displaySize = getDisplaySize();
155
+ const ssSize = getScreenshotSize(displaySize);
156
+ const abs = screenshotToDisplay(args.point, ssSize, displaySize);
157
+ await scroll(abs.x, abs.y, args.direction, args.amount);
158
+ return actionResult(`Scrolled ${args.direction} at screenshot (${Math.round(args.point.x)}, ${Math.round(args.point.y)}) → display (${abs.x}, ${abs.y})`);
159
+ });
201
160
  });
202
- export const computerUseDragTool = tool("computer_use_drag", "Drag from one element to another. Resolves both 'from' and 'to' via AI, then performs drag.", {
203
- from: z.string().describe("Natural language description of drag start"),
204
- to: z.string().describe("Natural language description of drag end"),
161
+ export const computerUseDragTool = tool("computer_use_drag", "Drag from one point to another on the desktop screen. Coordinates are pixel positions in the screenshot image.", {
162
+ startPoint: pointSchema.describe("Pixel coordinates in the screenshot image (drag source)"),
163
+ endPoint: pointSchema.describe("Pixel coordinates in the screenshot image (drop target)"),
205
164
  }, async (args) => {
206
- const err = requireDesktop();
207
- if (err)
208
- return err;
209
- const cfg = await getConfig();
210
- if (!cfg) {
211
- return {
212
- content: [{ type: "text", text: "Claude API credentials not configured" }],
213
- isError: true,
214
- };
215
- }
216
- const { base64: screenshot, filePath: screenshotPath } = await captureScreen();
217
- const size = getDisplaySize();
218
- const [fromResolved, toResolved] = await Promise.all([
219
- resolveCoordinates(screenshot, `Move cursor to the center of: ${args.from} (for dragging)`, size.width, size.height, cfg, screenshotPath),
220
- resolveCoordinates(screenshot, `Move cursor to the center of: ${args.to} (for dragging)`, size.width, size.height, cfg, screenshotPath),
221
- ]);
222
- if (!fromResolved) {
223
- return {
224
- content: [
225
- {
226
- type: "text",
227
- text: `Could not resolve 'from' coordinates: ${args.from}. Please try again with a clearer instruction.`,
228
- },
229
- ],
230
- isError: true,
231
- };
232
- }
233
- if (!toResolved) {
234
- return {
235
- content: [
236
- {
237
- type: "text",
238
- text: `Could not resolve 'to' coordinates: ${args.to}. Please try again with a clearer instruction.`,
239
- },
240
- ],
241
- isError: true,
242
- };
243
- }
244
- try {
245
- await drag(fromResolved.x, fromResolved.y, toResolved.x, toResolved.y);
246
- // wait for 1 second
247
- await new Promise((resolve) => setTimeout(resolve, 1000));
248
- const { base64: resultScreenshot } = await captureScreen();
249
- logger.screenshot(resultScreenshot);
250
- return {
251
- content: [
252
- {
253
- type: "text",
254
- text: `Dragged from (${fromResolved.x}, ${fromResolved.y}) to (${toResolved.x}, ${toResolved.y})`,
255
- },
256
- {
257
- type: "image",
258
- data: resultScreenshot,
259
- mimeType: "image/png",
260
- },
261
- ],
262
- };
263
- }
264
- catch (e) {
265
- logger.err("computer_use_drag failed", { error: String(e) });
266
- return {
267
- content: [
268
- {
269
- type: "text",
270
- text: `computer_use_drag failed: ${e instanceof Error ? e.message : String(e)}`,
271
- },
272
- ],
273
- isError: true,
274
- };
275
- }
165
+ return withDesktopCheck("computer_use_drag", async () => {
166
+ const displaySize = getDisplaySize();
167
+ const ssSize = getScreenshotSize(displaySize);
168
+ const start = screenshotToDisplay(args.startPoint, ssSize, displaySize);
169
+ const end = screenshotToDisplay(args.endPoint, ssSize, displaySize);
170
+ await drag(start.x, start.y, end.x, end.y);
171
+ return actionResult(`Dragged from screenshot (${Math.round(args.startPoint.x)}, ${Math.round(args.startPoint.y)}) to (${Math.round(args.endPoint.x)}, ${Math.round(args.endPoint.y)}) display (${start.x}, ${start.y}) to (${end.x}, ${end.y})`);
172
+ });
276
173
  });
277
174
  export const computerUseTypeTool = tool("computer_use_type", "Type text into the focused field. Optionally clear the field first (replace) and/or press Enter after.", {
278
175
  text: z.string().describe("Text to type"),
279
176
  replace: z.boolean().optional().default(false).describe("If true, select-all and replace existing text first"),
280
177
  press_enter: z.boolean().optional().default(false).describe("If true, press Enter after typing"),
281
178
  }, async (args) => {
282
- const err = requireDesktop();
283
- if (err)
284
- return err;
285
- try {
179
+ return withDesktopCheck("computer_use_type", async () => {
286
180
  if (args.replace) {
287
181
  await pressKey(process.platform === "win32" ? "ctrl+a" : "cmd+a");
288
182
  }
@@ -290,84 +184,33 @@ export const computerUseTypeTool = tool("computer_use_type", "Type text into the
290
184
  if (args.press_enter) {
291
185
  await pressKey("enter");
292
186
  }
293
- // wait for 1 second
294
- await new Promise((resolve) => setTimeout(resolve, 1000));
295
- const { base64: resultScreenshot } = await captureScreen();
296
- logger.screenshot(resultScreenshot);
297
- return {
298
- content: [
299
- { type: "text", text: `Typed text${args.press_enter ? " and pressed Enter" : ""}` },
300
- {
301
- type: "image",
302
- data: resultScreenshot,
303
- mimeType: "image/png",
304
- },
305
- ],
306
- };
307
- }
308
- catch (e) {
309
- logger.err("computer_use_type failed", { error: String(e) });
310
- return {
311
- content: [
312
- {
313
- type: "text",
314
- text: `computer_use_type failed: ${e instanceof Error ? e.message : String(e)}`,
315
- },
316
- ],
317
- isError: true,
318
- };
319
- }
187
+ return actionResult(`Typed text${args.press_enter ? " and pressed Enter" : ""}`);
188
+ });
320
189
  });
321
190
  export const computerUseKeyTool = tool("computer_use_key", "Press a key or key combination (e.g. 'enter', 'escape', 'cmd+s', 'ctrl+shift+t').", {
322
191
  key: z
323
192
  .string()
324
193
  .describe("Key or combo: 'enter', 'escape', 'cmd+s', 'ctrl+shift+t', etc."),
325
194
  }, async (args) => {
326
- const err = requireDesktop();
327
- if (err)
328
- return err;
329
- try {
195
+ return withDesktopCheck("computer_use_key", async () => {
330
196
  await pressKey(args.key);
331
- // wait for 1 second
332
- await new Promise((resolve) => setTimeout(resolve, 1000));
333
- const { base64: resultScreenshot } = await captureScreen();
334
- logger.screenshot(resultScreenshot);
335
- return {
336
- content: [
337
- { type: "text", text: `Pressed: ${args.key}` },
338
- {
339
- type: "image",
340
- data: resultScreenshot,
341
- mimeType: "image/png",
342
- },
343
- ],
344
- };
345
- }
346
- catch (e) {
347
- logger.err("computer_use_key failed", { error: String(e) });
348
- return {
349
- content: [
350
- {
351
- type: "text",
352
- text: `computer_use_key failed: ${e instanceof Error ? e.message : String(e)}`,
353
- },
354
- ],
355
- isError: true,
356
- };
357
- }
197
+ return actionResult(`Pressed: ${args.key}`);
198
+ });
358
199
  });
359
- export const computerUseScreenshotTool = tool("computer_use_screenshot", "Capture a screenshot of the current desktop screen. Returns the image as base64 PNG and the file path where it is saved.", {}, async (_args) => {
200
+ export const computerUseScreenshotTool = tool("computer_use_screenshot", "Capture a screenshot of the current desktop screen. Returns the image as base64 PNG. Use the pixel coordinates from this image when calling click, move, scroll, or drag tools.", {}, async (_args) => {
360
201
  const err = requireDesktop();
361
202
  if (err)
362
203
  return err;
363
204
  try {
205
+ const displaySize = getDisplaySize();
206
+ const ssSize = getScreenshotSize(displaySize);
364
207
  const { base64, filePath } = await takeScreenshot();
365
208
  logger.screenshot(base64);
366
209
  return {
367
210
  content: [
368
211
  {
369
212
  type: "text",
370
- text: `Screenshot saved to ${filePath}`,
213
+ text: `Screenshot saved to ${filePath}\nScreenshot image size: ${ssSize.width}x${ssSize.height}px | Display resolution: ${displaySize.width}x${displaySize.height}px\nUse pixel coordinates from this image when calling click/move/scroll/drag tools.`,
371
214
  },
372
215
  {
373
216
  type: "image",
@@ -1 +1 @@
1
- {"version":3,"file":"computer-use.js","sourceRoot":"","sources":["../../src/tools/computer-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computer-use.js","sourceRoot":"","sources":["../../src/tools/computer-use.ts"],"names":[],"mappings":"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"}