visionclaw 0.1.8 → 0.1.10

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.
@@ -5,6 +5,34 @@ export declare const CLAUDE_MAX_PIXELS = 1150000;
5
5
  * Returns a factor <= 1.0.
6
6
  */
7
7
  export declare function getVisionScaleFactor(width: number, height: number): number;
8
+ /**
9
+ * Get image dimensions using system tools (sips on macOS, identify on Linux).
10
+ * Returns { width, height } or null on failure.
11
+ */
12
+ export declare function getImageDimensions(buffer: Buffer): Promise<{
13
+ width: number;
14
+ height: number;
15
+ } | null>;
16
+ /**
17
+ * Resize a PNG buffer to fit within Claude's vision constraints.
18
+ * Uses system tools (sips on macOS, ImageMagick on Linux).
19
+ * Returns the (possibly resized) buffer.
20
+ */
21
+ export declare function resizeForVision(buffer: Buffer): Promise<Buffer>;
22
+ /**
23
+ * Resize a base64-encoded image to fit within Claude's vision constraints.
24
+ * Returns the (possibly resized) image as base64.
25
+ */
26
+ export declare function resizeBase64ForVision(base64: string): Promise<string>;
27
+ /**
28
+ * Download an image from a URL and resize it for Claude's vision constraints.
29
+ * Returns `{ base64, mimeType }` if successful, or `null` on failure.
30
+ * Used to replace URL-referenced images with properly-sized base64 data.
31
+ */
32
+ export declare function downloadAndResizeForVision(url: string): Promise<{
33
+ base64: string;
34
+ mimeType: string;
35
+ } | null>;
8
36
  /**
9
37
  * Take a screenshot of the current desktop.
10
38
  * Returns the base64-encoded PNG image. Compresses to under 2MB if needed.
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAoJD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CA0CtD;AAED,eAAO,MAAM,cAAc,mEA6B1B,CAAC"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAsGD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA4BnD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBrE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3E;AAcD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAmBtD;AAoCD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CA0CtD;AAED,eAAO,MAAM,cAAc,mEA6B1B,CAAC"}
@@ -3,7 +3,6 @@ import { promisify } from "node:util";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import os from "node:os";
6
- import sharp from "sharp";
7
6
  import { tool } from "@anthropic-ai/claude-agent-sdk";
8
7
  import { logger } from "../logger.js";
9
8
  const execAsync = promisify(exec);
@@ -89,56 +88,153 @@ async function compressWithFfmpeg(inputPath, outputPath, maxColors = 128) {
89
88
  }
90
89
  }
91
90
  /**
92
- * Resize a PNG buffer to fit within Claude's vision constraints.
93
- * Uses sharp to scale down preserving aspect ratio.
94
- * Returns the (possibly resized) buffer.
91
+ * Resize a buffer using system tools (sips on macOS, ImageMagick on Linux).
92
+ * Used as a fallback when sharp is not available.
93
+ * Returns the resized buffer, or null on failure.
95
94
  */
96
- async function resizeForVision(buffer) {
95
+ async function resizeWithSystemTools(buffer, targetW, targetH) {
96
+ const tmpIn = path.join(os.tmpdir(), `visionclaw-resize-in-${Date.now()}.png`);
97
+ const tmpOut = path.join(os.tmpdir(), `visionclaw-resize-out-${Date.now()}.png`);
97
98
  try {
98
- const meta = await sharp(buffer).metadata();
99
- const w = meta.width;
100
- const h = meta.height;
101
- if (!w || !h)
102
- return buffer;
103
- const scale = getVisionScaleFactor(w, h);
104
- if (scale >= 1.0)
105
- return buffer; // already within limits
106
- const targetW = Math.max(1, Math.round(w * scale));
107
- const targetH = Math.max(1, Math.round(h * scale));
108
- const resized = await sharp(buffer)
109
- .resize(targetW, targetH, { fit: "inside" })
110
- .png()
111
- .toBuffer();
112
- logger.debug(`Screenshot resized for vision: ${w}x${h} → ${targetW}x${targetH} (scale=${scale.toFixed(3)}, ${buffer.length} → ${resized.length} bytes)`);
113
- return resized;
99
+ fs.writeFileSync(tmpIn, buffer);
100
+ if (process.platform === "darwin") {
101
+ await execAsync(`sips -z ${targetH} ${targetW} "${tmpIn}" --out "${tmpOut}"`);
102
+ }
103
+ else {
104
+ await execAsync(`convert "${tmpIn}" -resize ${targetW}x${targetH}! "${tmpOut}"`);
105
+ }
106
+ if (fs.existsSync(tmpOut)) {
107
+ return fs.readFileSync(tmpOut);
108
+ }
109
+ return null;
114
110
  }
115
111
  catch (e) {
116
- logger.warn(`Screenshot vision resize failed, keeping original: ${e instanceof Error ? e.message : String(e)}`);
117
- return buffer;
112
+ logger.warn(`System tool resize failed: ${e instanceof Error ? e.message : String(e)}`);
113
+ return null;
114
+ }
115
+ finally {
116
+ try {
117
+ fs.unlinkSync(tmpIn);
118
+ }
119
+ catch { /* noop */ }
120
+ try {
121
+ fs.unlinkSync(tmpOut);
122
+ }
123
+ catch { /* noop */ }
118
124
  }
119
125
  }
120
126
  /**
121
- * Compress a PNG buffer if it exceeds the size threshold.
122
- * Tries sharp in-process first, then falls back to ffmpeg palette quantization.
127
+ * Get image dimensions using system tools (sips on macOS, identify on Linux).
128
+ * Returns { width, height } or null on failure.
123
129
  */
124
- async function compressIfNeeded(buffer, maxSize = MAX_SCREENSHOT_SIZE) {
125
- if (buffer.length <= maxSize)
130
+ export async function getImageDimensions(buffer) {
131
+ const tmpFile = path.join(os.tmpdir(), `visionclaw-dims-${Date.now()}.png`);
132
+ try {
133
+ fs.writeFileSync(tmpFile, buffer);
134
+ if (process.platform === "darwin") {
135
+ const { stdout } = await execAsync(`sips -g pixelWidth -g pixelHeight "${tmpFile}"`);
136
+ const wMatch = /pixelWidth:\s*(\d+)/.exec(stdout);
137
+ const hMatch = /pixelHeight:\s*(\d+)/.exec(stdout);
138
+ if (wMatch && hMatch) {
139
+ return { width: parseInt(wMatch[1], 10), height: parseInt(hMatch[1], 10) };
140
+ }
141
+ }
142
+ else {
143
+ const { stdout } = await execAsync(`identify -format "%w %h" "${tmpFile}"`);
144
+ const parts = stdout.trim().split(/\s+/);
145
+ if (parts.length >= 2) {
146
+ return { width: parseInt(parts[0], 10), height: parseInt(parts[1], 10) };
147
+ }
148
+ }
149
+ return null;
150
+ }
151
+ catch {
152
+ return null;
153
+ }
154
+ finally {
155
+ try {
156
+ fs.unlinkSync(tmpFile);
157
+ }
158
+ catch { /* noop */ }
159
+ }
160
+ }
161
+ /**
162
+ * Resize a PNG buffer to fit within Claude's vision constraints.
163
+ * Uses system tools (sips on macOS, ImageMagick on Linux).
164
+ * Returns the (possibly resized) buffer.
165
+ */
166
+ export async function resizeForVision(buffer) {
167
+ const dims = await getImageDimensions(buffer);
168
+ if (!dims) {
169
+ logger.warn("Could not read image dimensions, keeping original");
126
170
  return buffer;
127
- // 1. Try sharp in-process (works in dev, may fail in bundled app)
171
+ }
172
+ const scale = getVisionScaleFactor(dims.width, dims.height);
173
+ if (scale >= 1.0)
174
+ return buffer; // already within limits
175
+ const targetW = Math.max(1, Math.round(dims.width * scale));
176
+ const targetH = Math.max(1, Math.round(dims.height * scale));
177
+ const resized = await resizeWithSystemTools(buffer, targetW, targetH);
178
+ if (resized) {
179
+ logger.debug(`Image resized for vision: ${dims.width}x${dims.height} → ${targetW}x${targetH} (scale=${scale.toFixed(3)}, ${buffer.length} → ${resized.length} bytes)`);
180
+ return resized;
181
+ }
182
+ logger.warn("Image vision resize failed, keeping original");
183
+ return buffer;
184
+ }
185
+ /**
186
+ * Resize a base64-encoded image to fit within Claude's vision constraints.
187
+ * Returns the (possibly resized) image as base64.
188
+ */
189
+ export async function resizeBase64ForVision(base64) {
190
+ const buffer = Buffer.from(base64, "base64");
191
+ const resized = await resizeForVision(buffer);
192
+ return resized === buffer ? base64 : resized.toString("base64");
193
+ }
194
+ /**
195
+ * Detect MIME type from buffer magic bytes.
196
+ * Returns a MIME type string, defaulting to "image/png" if unknown.
197
+ */
198
+ function detectMimeType(buffer) {
199
+ if (buffer[0] === 0xFF && buffer[1] === 0xD8)
200
+ return "image/jpeg";
201
+ if (buffer[0] === 0x89 && buffer[1] === 0x50)
202
+ return "image/png";
203
+ if (buffer[0] === 0x47 && buffer[1] === 0x49)
204
+ return "image/gif";
205
+ if (buffer[0] === 0x52 && buffer[1] === 0x49)
206
+ return "image/webp";
207
+ return "image/png";
208
+ }
209
+ /**
210
+ * Download an image from a URL and resize it for Claude's vision constraints.
211
+ * Returns `{ base64, mimeType }` if successful, or `null` on failure.
212
+ * Used to replace URL-referenced images with properly-sized base64 data.
213
+ */
214
+ export async function downloadAndResizeForVision(url) {
128
215
  try {
129
- const compressed = await sharp(buffer)
130
- .png({ quality: 80, compressionLevel: 9, palette: true })
131
- .toBuffer();
132
- if (compressed.length < buffer.length) {
133
- logger.debug(`Screenshot sharp compress: ${buffer.length} → ${compressed.length} bytes`);
134
- if (compressed.length <= maxSize)
135
- return compressed;
216
+ const response = await fetch(url);
217
+ if (!response.ok) {
218
+ logger.warn(`Failed to download image from ${url}: ${response.status}`);
219
+ return null;
136
220
  }
221
+ const buffer = Buffer.from(await response.arrayBuffer());
222
+ const mimeType = detectMimeType(buffer);
223
+ const resized = await resizeForVision(buffer);
224
+ return { base64: resized.toString("base64"), mimeType };
137
225
  }
138
226
  catch (e) {
139
- logger.warn(`Screenshot sharp compression failed: ${e instanceof Error ? e.message : String(e)}`);
227
+ logger.warn(`Failed to download/resize image from ${url}: ${e instanceof Error ? e.message : String(e)}`);
228
+ return null;
140
229
  }
141
- // 2. Fallback: ffmpeg palette quantization on disk
230
+ }
231
+ /**
232
+ * Compress a PNG buffer if it exceeds the size threshold.
233
+ * Uses ffmpeg palette quantization.
234
+ */
235
+ async function compressIfNeeded(buffer, maxSize = MAX_SCREENSHOT_SIZE) {
236
+ if (buffer.length <= maxSize)
237
+ return buffer;
142
238
  const tmpIn = path.join(os.tmpdir(), `visionclaw-compress-in-${Date.now()}.png`);
143
239
  const tmpOut = path.join(os.tmpdir(), `visionclaw-compress-out-${Date.now()}.png`);
144
240
  try {
@@ -197,7 +293,7 @@ export async function takeScreenshot() {
197
293
  const rawBuffer = fs.readFileSync(tmpFile);
198
294
  // 1. Resize to fit Claude's vision constraints (reduces TTFT)
199
295
  const resized = await resizeForVision(rawBuffer);
200
- // 2. Compress if over file size threshold (sharp → ffmpeg fallback)
296
+ // 2. Compress if over file size threshold (ffmpeg)
201
297
  const compressed = await compressIfNeeded(resized);
202
298
  return compressed.toString("base64");
203
299
  }
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "visionclaw",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "A personal assistant agent that runs on your desktop, receives commands from messaging channels, and executes tasks autonomously.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,7 +26,6 @@
26
26
  "open": "^10.1.0",
27
27
  "playwright": "^1.49.0",
28
28
  "prompts": "^2.4.2",
29
- "sharp": "^0.34.5",
30
29
  "zod": "^3.24.0"
31
30
  },
32
31
  "devDependencies": {
@@ -51,7 +50,8 @@
51
50
  "start": "node dist/index.js",
52
51
  "lint": "eslint src/",
53
52
  "lint:fix": "eslint src/ --fix",
54
- "test": "vitest",
53
+ "test": "vitest run",
54
+ "test:watch": "vitest",
55
55
  "test:integration": "vitest run --config vitest.integration.config.ts",
56
56
  "get-google-token": "tsx scripts/get-google-token.ts",
57
57
  "reconfigure": "tsx scripts/reconfigure.ts",