@moxxy/plugin-computer-control 0.33.0 → 0.35.0

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 +1 @@
1
- {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,8BAmExB,CAAC"}
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,8BAoExB,CAAC"}
@@ -2,6 +2,7 @@ import { defineTool, MoxxyError, z } from '@moxxy/sdk';
2
2
  import { ensureDarwin, procFailureCause, runProcess } from '../shell.js';
3
3
  export const clipboardTool = defineTool({
4
4
  name: 'computer_clipboard',
5
+ icon: 'clipboard',
5
6
  description: 'Read from or write to the macOS clipboard. Use `read` to fetch what the ' +
6
7
  'user just copied; use `write` to stage text the user can then paste with ' +
7
8
  '⌘V. Writing the clipboard does NOT trigger a paste — call computer_key ' +
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/tools/open.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,8BA2FnB,CAAC"}
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/tools/open.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,8BA4FnB,CAAC"}
@@ -2,6 +2,7 @@ import { defineTool, MoxxyError, z } from '@moxxy/sdk';
2
2
  import { ensureDarwin, procFailureCause, runProcess } from '../shell.js';
3
3
  export const openTool = defineTool({
4
4
  name: 'computer_open',
5
+ icon: 'globe',
5
6
  description: 'Open a URL, file path, or .app bundle via macOS `open`. Use this to ' +
6
7
  'launch / activate a specific app or jump to a web page. The model should ' +
7
8
  'prefer this over typing into Spotlight when the target is known.',
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/tools/open.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/tools/open.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,cAAc,8BAoKzB,CAAC"}
1
+ {"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,cAAc,8BAqKzB,CAAC"}
@@ -25,6 +25,7 @@ const DEFAULT_JPEG_QUALITY = 72;
25
25
  const MAX_BYTES = 1_500_000;
26
26
  export const screenshotTool = defineTool({
27
27
  name: 'computer_screenshot',
28
+ icon: 'workspace',
28
29
  description: 'Take a screenshot of the macOS desktop. Returns base64-encoded image bytes ' +
29
30
  'the model can see directly. By default the image is downscaled to 1280px ' +
30
31
  'and JPEG-compressed so a single screenshot stays well under context — ' +
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,cAAc,GAAG,MAAe,CAAC;AACvC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC;;4DAE4D;AAC5D,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,6EAA6E;QAC7E,2EAA2E;QAC3E,wEAAwE;QACxE,6EAA6E;QAC7E,6EAA6E;IAC/E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,YAAY;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,0FAA0F,CAC3F;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,GAAG,CAAC;aACR,GAAG,CAAC,IAAI,CAAC;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,8DAA8D,eAAe,IAAI;YAC/E,qFAAqF,CACxF;QACH,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACrB,QAAQ,EAAE;aACV,QAAQ,CACP,2BAA2B,cAAc,yCAAyC;YAChF,6DAA6D,CAChE;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,EAAE,CAAC;aACP,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,iCAAiC,oBAAoB,2BAA2B,CACjF;KACJ,CAAC;IACF,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;IAChC,oEAAoE;IACpE,wEAAwE;IACxE,wCAAwC;IACxC,SAAS,EAAE;QACT,YAAY,EAAE;YACZ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;YACnC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACjE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACrB,MAAM,EAAE,MAAM;SACf;KACF;IACD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG;QACpD,YAAY,CAAC,qBAAqB,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,IAAI,cAAc,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,eAAe,CAAC;QACtC,MAAM,CAAC,GAAG,OAAO,IAAI,oBAAoB,CAAC;QAE1C,iEAAiE;QACjE,gEAAgE;QAChE,0CAA0C;QAC1C,qEAAqE;QACrE,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,EAAE,CAAC,MAAM,EAAE,EACX,mBAAmB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAC3D,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,uEAAuE;QACvE,qEAAqE;QACrE,uEAAuE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,WAAW,EAAE;gBACzD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,IAAI,UAAU,CAAC;oBACnB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,KAAK;wBACZ,CAAC,CAAC,iBAAiB,KAAK,EAAE;wBAC1B,CAAC,CAAC,8BAA8B,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,0GAA0G,EAAE;oBACrL,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;iBACjG,CAAC,CAAC;YACL,CAAC;YAED,iEAAiE;YACjE,gEAAgE;YAChE,oDAAoD;YACpD,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CACtB,EAAE,CAAC,MAAM,EAAE,EACX,mBAAmB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,QAAQ,MAAM,EAAE,CACrE,CAAC;YACF,MAAM,QAAQ,GAAG;gBACf,IAAI;gBACJ,MAAM,CAAC,GAAG,CAAC;gBACX,eAAe;gBACf,QAAQ;gBACR,GAAG;aACJ,CAAC;YACF,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;gBAC7C,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,IAAI,UAAU,CAAC;oBACnB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,KAAK;wBACZ,CAAC,CAAC,uBAAuB,KAAK,EAAE;wBAChC,CAAC,CAAC,oCAAoC,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,oBAAoB,EAAE;oBACrG,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;iBACjG,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;oBAC7B,MAAM,IAAI,UAAU,CAAC;wBACnB,IAAI,EAAE,YAAY;wBAClB,OAAO,EACL,uBAAuB,SAAS,iCAAiC,KAAK,CAAC,MAAM,KAAK;4BAClF,2BAA2B,GAAG,2BAA2B,CAAC,8BAA8B;wBAC1F,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE;qBACnE,CAAC,CAAC;gBACL,CAAC;gBACD,wEAAwE;gBACxE,qEAAqE;gBACrE,wEAAwE;gBACxE,yEAAyE;gBACzE,sEAAsE;gBACtE,2DAA2D;gBAC3D,OAAO;oBACL,SAAS,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAE,YAAsB,CAAC,CAAC,CAAE,WAAqB;oBAC5E,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAChC,UAAU,EAAE,KAAK,CAAC,MAAM;oBACxB,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,GAAG;oBACX,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
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": "@moxxy/plugin-computer-control",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "description": "Programmatic control of the host computer (macOS only for now): screenshot, click, type, key, open, clipboard, applescript. Every tool prompts for permission.",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "dependencies": {
49
49
  "zod": "^3.24.0",
50
- "@moxxy/sdk": "0.33.0"
50
+ "@moxxy/sdk": "0.35.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^22.10.0",
54
54
  "typescript": "^5.7.3",
55
55
  "vitest": "^2.1.8",
56
- "@moxxy/tsconfig": "0.0.0",
57
- "@moxxy/vitest-preset": "0.0.0"
56
+ "@moxxy/vitest-preset": "0.0.0",
57
+ "@moxxy/tsconfig": "0.0.0"
58
58
  },
59
59
  "scripts": {
60
60
  "build": "tsc -p tsconfig.json",
@@ -3,6 +3,7 @@ import { ensureDarwin, procFailureCause, runProcess } from '../shell.js';
3
3
 
4
4
  export const clipboardTool = defineTool({
5
5
  name: 'computer_clipboard',
6
+ icon: 'clipboard',
6
7
  description:
7
8
  'Read from or write to the macOS clipboard. Use `read` to fetch what the ' +
8
9
  'user just copied; use `write` to stage text the user can then paste with ' +
package/src/tools/open.ts CHANGED
@@ -3,6 +3,7 @@ import { ensureDarwin, procFailureCause, runProcess } from '../shell.js';
3
3
 
4
4
  export const openTool = defineTool({
5
5
  name: 'computer_open',
6
+ icon: 'globe',
6
7
  description:
7
8
  'Open a URL, file path, or .app bundle via macOS `open`. Use this to ' +
8
9
  'launch / activate a specific app or jump to a web page. The model should ' +
@@ -0,0 +1,137 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import { MoxxyError } from '@moxxy/sdk';
4
+
5
+ /**
6
+ * Hermetic cover for the screenshot handler.
7
+ *
8
+ * The previous test shelled out to the real `screencapture`, which made it
9
+ * depend on the host being macOS, having a display, and having been granted
10
+ * Screen Recording. Worse, it accepted a thrown MoxxyError as a pass, so on any
11
+ * machine without that permission (every CI runner) it verified nothing while
12
+ * still reporting green. Faking the process layer means the contract below is
13
+ * actually asserted, on every platform.
14
+ */
15
+ const runProcess = vi.fn();
16
+ const ensureDarwin = vi.fn();
17
+
18
+ vi.mock('../shell.js', async (importOriginal) => {
19
+ const actual = await importOriginal<typeof import('../shell.js')>();
20
+ return {
21
+ ...actual,
22
+ ensureDarwin: (...args: unknown[]) => ensureDarwin(...args),
23
+ runProcess: (...args: unknown[]) => runProcess(...args),
24
+ };
25
+ });
26
+
27
+ const { screenshotTool } = await import('./screenshot.js');
28
+
29
+ const ctx = { signal: new AbortController().signal } as never;
30
+
31
+ /** Smallest thing that is unmistakably PNG bytes; content is never decoded. */
32
+ const PNG = Buffer.from('89504e470d0a1a0a0000000d49484452', 'hex');
33
+
34
+ const ok = { exitCode: 0, stdout: '', stderr: '', timedOut: false };
35
+
36
+ /** Track every temp path either command was pointed at, to assert cleanup. */
37
+ let touched: string[] = [];
38
+
39
+ const workingTools = (outBytes: Buffer = PNG): void => {
40
+ runProcess.mockImplementation(async (cmd: string, args: string[]) => {
41
+ if (cmd === 'screencapture') {
42
+ const target = args[args.length - 1]!;
43
+ touched.push(target);
44
+ await fs.writeFile(target, PNG);
45
+ return ok;
46
+ }
47
+ if (cmd === 'sips') {
48
+ const out = args[args.indexOf('--out') + 1]!;
49
+ touched.push(out);
50
+ await fs.writeFile(out, outBytes);
51
+ return ok;
52
+ }
53
+ throw new Error(`unexpected command ${cmd}`);
54
+ });
55
+ };
56
+
57
+ beforeEach(() => {
58
+ touched = [];
59
+ ensureDarwin.mockReset();
60
+ runProcess.mockReset();
61
+ });
62
+ afterEach(async () => {
63
+ for (const f of touched) await fs.rm(f, { force: true });
64
+ });
65
+
66
+ describe('computer_screenshot', () => {
67
+ it('returns { mediaType, base64 }, the shape the model can actually see', async () => {
68
+ // Load-bearing: the SDK emits a provider `image` block only for exactly
69
+ // this shape. Anything else is JSON.stringify'd and reaches the model as
70
+ // base64 TEXT it cannot decode.
71
+ workingTools();
72
+
73
+ const result = (await screenshotTool.handler({}, ctx)) as Record<string, unknown>;
74
+
75
+ expect(typeof result).toBe('object');
76
+ // jpeg is the default: much smaller, and the model reads pixels not bytes.
77
+ expect(result.mediaType).toBe('image/jpeg');
78
+ expect(typeof result.base64).toBe('string');
79
+ expect(result.base64).toBe(PNG.toString('base64'));
80
+ });
81
+
82
+ it('reports image/png when png was asked for', async () => {
83
+ workingTools();
84
+
85
+ const result = (await screenshotTool.handler({ format: 'png' }, ctx)) as Record<
86
+ string,
87
+ unknown
88
+ >;
89
+
90
+ expect(result.mediaType).toBe('image/png');
91
+ });
92
+
93
+ it('passes a region through to screencapture as -R', async () => {
94
+ workingTools();
95
+
96
+ await screenshotTool.handler({ region: { x: 1, y: 2, width: 3, height: 4 } }, ctx);
97
+
98
+ const args = runProcess.mock.calls.find((c) => c[0] === 'screencapture')![1] as string[];
99
+ expect(args[args.indexOf('-R') + 1]).toBe('1,2,3,4');
100
+ });
101
+
102
+ it('refuses on a non-darwin host rather than shelling out anyway', async () => {
103
+ ensureDarwin.mockImplementation(() => {
104
+ throw new MoxxyError({ code: 'TOOL_ERROR', message: 'darwin only' });
105
+ });
106
+
107
+ await expect(screenshotTool.handler({}, ctx)).rejects.toBeInstanceOf(MoxxyError);
108
+ expect(runProcess).not.toHaveBeenCalled();
109
+ });
110
+
111
+ it('surfaces a capture failure as a MoxxyError, naming the likely cause', async () => {
112
+ runProcess.mockResolvedValue({ exitCode: 1, stdout: '', stderr: '', timedOut: false });
113
+
114
+ await expect(screenshotTool.handler({}, ctx)).rejects.toThrow(/screencapture failed/);
115
+ });
116
+
117
+ it('refuses an image that is still over the cap after compression', async () => {
118
+ // Rather than hand the model megabytes it cannot use, say what to lower.
119
+ workingTools(Buffer.alloc(6 * 1024 * 1024, 1));
120
+
121
+ await expect(screenshotTool.handler({}, ctx)).rejects.toThrow(/exceeded/);
122
+ });
123
+
124
+ it('leaves no temp file behind, on success or on failure', async () => {
125
+ workingTools();
126
+ await screenshotTool.handler({}, ctx);
127
+
128
+ runProcess.mockReset();
129
+ workingTools(Buffer.alloc(6 * 1024 * 1024, 1));
130
+ await screenshotTool.handler({}, ctx).catch(() => undefined);
131
+
132
+ expect(touched.length).toBeGreaterThan(0);
133
+ for (const f of touched) {
134
+ await expect(fs.access(f)).rejects.toThrow();
135
+ }
136
+ });
137
+ });
@@ -28,6 +28,7 @@ const MAX_BYTES = 1_500_000;
28
28
 
29
29
  export const screenshotTool = defineTool({
30
30
  name: 'computer_screenshot',
31
+ icon: 'workspace',
31
32
  description:
32
33
  'Take a screenshot of the macOS desktop. Returns base64-encoded image bytes ' +
33
34
  'the model can see directly. By default the image is downscaled to 1280px ' +
package/src/tools.test.ts CHANGED
@@ -77,40 +77,6 @@ describe('@moxxy/plugin-computer-control schemas', () => {
77
77
  }
78
78
  });
79
79
 
80
- it('screenshot returns an image-shaped result ({ mediaType, base64 }), never a stringified blob', async () => {
81
- // The SDK's tool_result projection emits a provider `image` ContentBlock
82
- // ONLY when the result object carries a string `mediaType` + `base64`; any
83
- // other shape falls through to JSON.stringify and reaches the model as
84
- // undecodable base64 TEXT. Assert the handler honors that contract.
85
- if (process.platform === 'darwin') {
86
- // On a host without Screen Recording permission (typical CI) the handler
87
- // throws a MoxxyError instead of capturing — also acceptable; the ONLY
88
- // forbidden outcome is returning a (stringified) blob the model can't see.
89
- let result: unknown;
90
- try {
91
- // Tiny region keeps the capture cheap and well under the byte cap.
92
- result = await screenshotTool.handler(
93
- { region: { x: 0, y: 0, width: 1, height: 1 } },
94
- fakeCtx,
95
- );
96
- } catch (err) {
97
- expect(err).toBeInstanceOf(MoxxyError);
98
- return;
99
- }
100
- // Must be a structured object, NOT a string (a stringified blob).
101
- expect(typeof result).toBe('object');
102
- expect(result).not.toBeNull();
103
- const r = result as { mediaType?: unknown; base64?: unknown };
104
- expect(typeof r.mediaType).toBe('string');
105
- expect(r.mediaType as string).toMatch(/^image\//);
106
- expect(typeof r.base64).toBe('string');
107
- expect((r.base64 as string).length).toBeGreaterThan(0);
108
- } else {
109
- // Non-darwin: ensureDarwin rejects before any capture — still never a blob.
110
- await expect(screenshotTool.handler({}, fakeCtx)).rejects.toBeInstanceOf(MoxxyError);
111
- }
112
- });
113
-
114
80
  it('every tool is permission:prompt — never auto-allowed', () => {
115
81
  const all = [
116
82
  screenshotTool,