@amaster.ai/pi-computer-use 0.1.2-beta.4 → 0.1.2-beta.6

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/README.md CHANGED
@@ -6,11 +6,11 @@ pi-coding-agent extension that wraps [cua-driver-rs](https://github.com/trycua/c
6
6
 
7
7
  - **Zero external dependencies** — pre-compiled cua-driver-rs binaries bundled for all platforms
8
8
  - **MCP stdio communication** — spawns `cua-driver mcp` via `StdioClientTransport`, JSON-RPC over stdio
9
- - **Dynamic tool discovery** — auto-discovers upstream MCP tools and registers with `computer_use_` prefix
10
- - **Smart tool filtering** — excludes non-essential tools (agent cursor, recording, config), exposes 18 core tools
9
+ - **Dynamic tool discovery** — auto-discovers upstream MCP tools and registers with `computer_use_` prefix; falls back to a built-in tool list when cua-driver fails to start
10
+ - **Smart tool filtering** — excludes non-essential tools (agent cursor, recording, config, raw screenshot), exposes 17 action tools + 1 vision tool
11
11
  - **Optional visual analysis** — `computer_use_analyze_screenshot` via configurable vision model
12
- - **Permission detection** — checks Accessibility & Screen Recording on startup, warns if not granted, and returns friendly guidance on permission errors
13
- - **Cross-platform** — darwin-arm64/x64, linux-x64, win32-x64/arm64
12
+ - **Cross-platform permission handling** — detects platform-specific permission issues (macOS TCC, Windows UAC, Linux display server access) and returns actionable guidance
13
+ - **Graceful degradation** — tools are always registered even when cua-driver cannot connect; lazy reconnect is attempted on each tool call
14
14
 
15
15
  ## Install
16
16
 
@@ -60,50 +60,64 @@ Enable `computer_use_analyze_screenshot` by referencing a model already configur
60
60
 
61
61
  The extension resolves API key, base URL, and headers from the model registry automatically — no need to duplicate credentials here.
62
62
 
63
- ## Exposed Tools (18)
63
+ ## Exposed Tools (17 + 1 vision)
64
64
 
65
- ### Core
65
+ ### Input
66
66
 
67
67
  | Tool | Description |
68
68
  |------|-------------|
69
- | `computer_use_screenshot` | Capture screen |
70
- | `computer_use_click` | Click at coordinates |
71
- | `computer_use_type_text` | Type text |
72
- | `computer_use_press_key` | Press a keyboard key |
73
- | `computer_use_scroll` | Scroll in a direction |
74
- | `computer_use_hotkey` | Press key combination |
69
+ | `computer_use_click` | Left-click via element_index or x/y coordinates |
70
+ | `computer_use_double_click` | Double-click at x/y or on an AX element |
71
+ | `computer_use_right_click` | Right-click (context menu) |
72
+ | `computer_use_type_text` | Insert text via AX or CGEvent fallback |
73
+ | `computer_use_press_key` | Press and release a single key |
74
+ | `computer_use_hotkey` | Press a key combination (e.g. Cmd+C) |
75
+ | `computer_use_scroll` | Scroll by line or page in a direction |
76
+ | `computer_use_drag` | Press-drag-release gesture between two points |
77
+ | `computer_use_set_value` | Set value on UI elements (popups, sliders, steppers) |
75
78
 
76
- ### Common
79
+ ### Query
77
80
 
78
81
  | Tool | Description |
79
82
  |------|-------------|
80
- | `computer_use_double_click` | Double-click |
81
- | `computer_use_right_click` | Right-click (context menu) |
82
- | `computer_use_drag` | Drag from one point to another |
83
- | `computer_use_get_screen_size` | Get screen dimensions |
84
- | `computer_use_get_accessibility_tree` | Get accessibility tree for element discovery |
85
- | `computer_use_set_value` | Set form field value directly |
86
- | `computer_use_get_cursor_position` | Get current cursor position |
83
+ | `computer_use_get_screen_size` | Get display dimensions and scale factor |
84
+ | `computer_use_get_cursor_position` | Get current mouse cursor position |
85
+ | `computer_use_get_accessibility_tree` | Lightweight desktop snapshot (apps, windows, bounds) |
86
+ | `computer_use_get_window_state` | Full AX tree of a window with actionable element indices |
87
+ | `computer_use_list_windows` | List all top-level windows with bounds and z-order |
88
+ | `computer_use_list_apps` | List running and installed apps with state flags |
87
89
 
88
- ### Situational
90
+ ### App Lifecycle
89
91
 
90
92
  | Tool | Description |
91
93
  |------|-------------|
92
- | `computer_use_list_apps` | List running applications |
93
- | `computer_use_list_windows` | List open windows |
94
- | `computer_use_get_window_state` | Get window state/position |
95
- | `computer_use_launch_app` | Launch an application |
96
- | `computer_use_kill_app` | Kill an application |
94
+ | `computer_use_launch_app` | Launch an app in the background without focus steal |
95
+ | `computer_use_kill_app` | Force-terminate a process by pid |
97
96
 
98
- ## Excluded Tools (15)
97
+ ### Vision (requires `visionModel` config)
99
98
 
100
- Agent cursor styling, recording/replay, config management, and redundant operations (covered by other tools) are filtered out.
99
+ | Tool | Description |
100
+ |------|-------------|
101
+ | `computer_use_analyze_screenshot` | Take a screenshot and analyze it with a vision model |
102
+
103
+ ## Excluded Tools (16)
104
+
105
+ Agent cursor styling, recording/replay, config management, zoom, raw screenshot (use `analyze_screenshot` instead), and browser-specific operations are filtered out.
101
106
 
102
107
  ## Permissions
103
108
 
104
- On `session_start`, the extension checks macOS Accessibility and Screen Recording permissions via cua-driver's `check_permissions`. If not granted, a non-blocking warning is shown to the user.
109
+ On `session_start`, the extension checks permissions via cua-driver's `check_permissions` tool. Platform-specific guidance is provided:
110
+
111
+ | Platform | Accessibility | Screen Capture |
112
+ |----------|--------------|----------------|
113
+ | macOS | System Settings → Privacy & Security → Accessibility | System Settings → Privacy & Security → Screen & System Audio Recording |
114
+ | Windows | Run as Administrator / UI Automation access | Check DRM or security policy |
115
+ | Linux | AT-SPI accessibility service | PipeWire portal or X11 access |
105
116
 
106
- When a tool call fails due to missing permissions (`ax_not_granted` / `sc_not_granted`), the extension returns a friendly message guiding the user to System Settings instead of a raw error.
117
+ When cua-driver fails to connect (missing permissions, binary not found, etc.):
118
+ 1. User is notified with a platform-appropriate warning
119
+ 2. Tools are still registered using a built-in fallback schema
120
+ 3. On each tool call, lazy reconnect is attempted; if it still fails, a friendly error with permission instructions is returned
107
121
 
108
122
  ## Supported Platforms
109
123
 
@@ -0,0 +1,2 @@
1
+ cua-driver-v0.2.0
2
+ swift
Binary file
@@ -0,0 +1,2 @@
1
+ cua-driver-v0.2.0
2
+ swift
Binary file
@@ -0,0 +1,2 @@
1
+ cua-driver-rs-v0.2.18
2
+ rust
Binary file
@@ -0,0 +1,2 @@
1
+ cua-driver-rs-v0.2.18
2
+ rust
Binary file
@@ -0,0 +1,2 @@
1
+ cua-driver-rs-v0.2.18
2
+ rust
Binary file
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIxF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;AAsB7C,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkLnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIxF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;AAsY7C,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA6MnE"}
package/dist/index.js CHANGED
@@ -4,6 +4,37 @@ import { CuaDriverClient } from './mcp-client.js';
4
4
  import { createPiVisionCaller } from './vision.js';
5
5
  export { loadConfigFromFile, resolveConfig };
6
6
  const TOOL_PREFIX = 'computer_use_';
7
+ const PLATFORM = process.platform;
8
+ function permissionHint() {
9
+ switch (PLATFORM) {
10
+ case 'darwin':
11
+ return 'Check that Accessibility and Screen Recording permissions are granted in System Settings → Privacy & Security.';
12
+ case 'win32':
13
+ return 'Try running the application as Administrator, or check that UI Automation access is not blocked by security software.';
14
+ default:
15
+ return 'Check that the process has access to the display server (X11/Wayland) and required input permissions are configured.';
16
+ }
17
+ }
18
+ function accessibilityHint() {
19
+ switch (PLATFORM) {
20
+ case 'darwin':
21
+ return 'Accessibility permission not granted. The user needs to enable it in System Settings → Privacy & Security → Accessibility, then restart the app.';
22
+ case 'win32':
23
+ return 'UI Automation access denied. Try running the application as Administrator.';
24
+ default:
25
+ return 'Input automation access denied. Check that AT-SPI or equivalent accessibility service is available.';
26
+ }
27
+ }
28
+ function screenRecordingHint() {
29
+ switch (PLATFORM) {
30
+ case 'darwin':
31
+ return 'Screen Recording permission not granted. The user needs to enable it in System Settings → Privacy & Security → Screen & System Audio Recording, then restart the app.';
32
+ case 'win32':
33
+ return 'Screen capture failed. Try running the application as Administrator, or check that screen capture is not blocked by DRM or security policy.';
34
+ default:
35
+ return 'Screen capture failed. Check that the compositor allows screen capture (PipeWire portal or X11 access).';
36
+ }
37
+ }
7
38
  const EXCLUDED_TOOLS = new Set([
8
39
  'set_agent_cursor_enabled',
9
40
  'set_agent_cursor_motion',
@@ -20,7 +51,336 @@ const EXCLUDED_TOOLS = new Set([
20
51
  'type_text_chars',
21
52
  'page',
22
53
  'browser_eval',
54
+ 'screenshot',
23
55
  ]);
56
+ const FALLBACK_TOOLS = [
57
+ {
58
+ name: 'click',
59
+ description: 'Left-click against a target pid via element_index or x/y coordinates',
60
+ inputSchema: {
61
+ type: 'object',
62
+ additionalProperties: false,
63
+ properties: {
64
+ pid: { type: 'integer', description: 'Target process ID' },
65
+ x: { type: 'number', description: 'Window-local screenshot X coordinate' },
66
+ y: { type: 'number', description: 'Window-local screenshot Y coordinate' },
67
+ element_index: { type: 'integer', description: 'Element index from last get_window_state' },
68
+ window_id: { type: 'integer', description: 'Target window ID. Required for element_index' },
69
+ action: {
70
+ type: 'string',
71
+ description: 'AX action: press, show_menu, pick, confirm, cancel, open',
72
+ },
73
+ modifier: {
74
+ type: 'array',
75
+ items: { type: 'string' },
76
+ description: 'Modifier keys: cmd, shift, option/alt, ctrl',
77
+ },
78
+ from_zoom: {
79
+ type: 'boolean',
80
+ description: 'When true, x/y are in last zoom image coordinates',
81
+ },
82
+ },
83
+ required: ['pid'],
84
+ },
85
+ },
86
+ {
87
+ name: 'double_click',
88
+ description: 'Double-click at x/y or on an AX element via element_index',
89
+ inputSchema: {
90
+ type: 'object',
91
+ additionalProperties: false,
92
+ properties: {
93
+ pid: { type: 'integer' },
94
+ x: { type: 'number', description: 'Screen X coordinate (pixel path)' },
95
+ y: { type: 'number', description: 'Screen Y coordinate (pixel path)' },
96
+ element_index: { type: 'integer', description: 'Element index from last get_window_state' },
97
+ window_id: {
98
+ type: 'integer',
99
+ description: 'CGWindowID. Required when element_index is used',
100
+ },
101
+ },
102
+ required: ['pid'],
103
+ },
104
+ },
105
+ {
106
+ name: 'right_click',
107
+ description: 'Right-click against a target pid via element_index or x/y coordinates',
108
+ inputSchema: {
109
+ type: 'object',
110
+ additionalProperties: false,
111
+ properties: {
112
+ pid: { type: 'integer', description: 'Target process ID' },
113
+ x: { type: 'number', description: 'X in window-local screenshot pixels' },
114
+ y: { type: 'number', description: 'Y in window-local screenshot pixels' },
115
+ element_index: {
116
+ type: 'integer',
117
+ description: 'Element index from last get_window_state. Routes through AXShowMenu',
118
+ },
119
+ window_id: {
120
+ type: 'integer',
121
+ description: 'CGWindowID. Required when element_index is used',
122
+ },
123
+ modifier: {
124
+ type: 'array',
125
+ items: { type: 'string' },
126
+ description: 'Modifier keys held during the right-click (pixel path only)',
127
+ },
128
+ },
129
+ required: ['pid'],
130
+ },
131
+ },
132
+ {
133
+ name: 'type_text',
134
+ description: 'Insert text into the target pid via AX or CGEvent fallback',
135
+ inputSchema: {
136
+ type: 'object',
137
+ additionalProperties: false,
138
+ properties: {
139
+ pid: { type: 'integer', description: 'Target process ID' },
140
+ text: { type: 'string', description: 'Text to insert at the target cursor' },
141
+ element_index: { type: 'integer', description: 'Element index from last get_window_state' },
142
+ window_id: {
143
+ type: 'integer',
144
+ description: 'CGWindowID. Required when element_index is used',
145
+ },
146
+ delay_ms: {
147
+ type: 'integer',
148
+ minimum: 0,
149
+ maximum: 200,
150
+ description: 'Milliseconds between characters in CGEvent fallback. Default 30',
151
+ },
152
+ },
153
+ required: ['pid', 'text'],
154
+ },
155
+ },
156
+ {
157
+ name: 'press_key',
158
+ description: 'Press and release a single key, delivered to the target pid',
159
+ inputSchema: {
160
+ type: 'object',
161
+ additionalProperties: false,
162
+ properties: {
163
+ pid: { type: 'integer' },
164
+ key: {
165
+ type: 'string',
166
+ description: 'Key name: return, tab, escape, up, down, left, right, space, delete, etc.',
167
+ },
168
+ modifiers: {
169
+ type: 'array',
170
+ items: { type: 'string' },
171
+ description: 'Modifier keys: cmd, shift, option/alt, ctrl, fn',
172
+ },
173
+ element_index: { type: 'integer' },
174
+ window_id: { type: 'integer' },
175
+ },
176
+ required: ['pid', 'key'],
177
+ },
178
+ },
179
+ {
180
+ name: 'hotkey',
181
+ description: 'Press a combination of keys simultaneously, e.g. ["cmd", "c"] for Copy',
182
+ inputSchema: {
183
+ type: 'object',
184
+ additionalProperties: false,
185
+ properties: {
186
+ pid: { type: 'integer', description: 'Target process ID' },
187
+ keys: {
188
+ type: 'array',
189
+ items: { type: 'string' },
190
+ minItems: 2,
191
+ description: 'Modifier(s) and one non-modifier key, e.g. ["cmd", "c"]',
192
+ },
193
+ window_id: {
194
+ type: 'integer',
195
+ description: 'When set, uses NSMenu path for native menu key dispatch',
196
+ },
197
+ },
198
+ required: ['pid', 'keys'],
199
+ },
200
+ },
201
+ {
202
+ name: 'scroll',
203
+ description: 'Scroll the target pid focused region by synthesized keystrokes',
204
+ inputSchema: {
205
+ type: 'object',
206
+ additionalProperties: false,
207
+ properties: {
208
+ pid: { type: 'integer' },
209
+ direction: {
210
+ type: 'string',
211
+ enum: ['up', 'down', 'left', 'right'],
212
+ description: 'Scroll direction',
213
+ },
214
+ amount: {
215
+ type: 'integer',
216
+ minimum: 1,
217
+ maximum: 50,
218
+ description: 'Number of keystroke repetitions. Default: 3',
219
+ },
220
+ by: {
221
+ type: 'string',
222
+ enum: ['line', 'page'],
223
+ description: 'Scroll granularity. Default: line',
224
+ },
225
+ element_index: { type: 'integer' },
226
+ window_id: { type: 'integer' },
227
+ },
228
+ required: ['pid', 'direction'],
229
+ },
230
+ },
231
+ {
232
+ name: 'drag',
233
+ description: 'Press-drag-release gesture from one point to another in window-local pixels',
234
+ inputSchema: {
235
+ type: 'object',
236
+ additionalProperties: false,
237
+ properties: {
238
+ pid: { type: 'integer', description: 'Target process ID' },
239
+ from_x: { type: 'number', description: 'Drag-start X in window-local screenshot pixels' },
240
+ from_y: { type: 'number', description: 'Drag-start Y in window-local screenshot pixels' },
241
+ to_x: { type: 'number', description: 'Drag-end X in window-local screenshot pixels' },
242
+ to_y: { type: 'number', description: 'Drag-end Y in window-local screenshot pixels' },
243
+ button: {
244
+ type: 'string',
245
+ enum: ['left', 'right', 'middle'],
246
+ description: 'Mouse button. Default: left',
247
+ },
248
+ duration_ms: {
249
+ type: 'integer',
250
+ minimum: 0,
251
+ maximum: 10000,
252
+ description: 'Duration of drag path. Default: 500',
253
+ },
254
+ steps: {
255
+ type: 'integer',
256
+ minimum: 1,
257
+ maximum: 200,
258
+ description: 'Intermediate drag events. Default: 20',
259
+ },
260
+ modifier: {
261
+ type: 'array',
262
+ items: { type: 'string' },
263
+ description: 'Modifier keys held across the gesture',
264
+ },
265
+ window_id: { type: 'integer' },
266
+ from_zoom: { type: 'boolean' },
267
+ },
268
+ required: ['pid', 'from_x', 'from_y', 'to_x', 'to_y'],
269
+ },
270
+ },
271
+ {
272
+ name: 'set_value',
273
+ description: 'Set a value on a UI element (popups, sliders, steppers, date pickers)',
274
+ inputSchema: {
275
+ type: 'object',
276
+ additionalProperties: false,
277
+ properties: {
278
+ pid: { type: 'integer' },
279
+ window_id: {
280
+ type: 'integer',
281
+ description: 'CGWindowID for the window whose get_window_state produced the element_index',
282
+ },
283
+ element_index: { type: 'integer' },
284
+ value: {
285
+ type: 'string',
286
+ description: 'New value. AX will coerce to the element native type',
287
+ },
288
+ },
289
+ required: ['pid', 'window_id', 'element_index', 'value'],
290
+ },
291
+ },
292
+ {
293
+ name: 'get_screen_size',
294
+ description: 'Return the logical size of the main display in points plus backing scale factor',
295
+ inputSchema: { type: 'object', additionalProperties: false, properties: {} },
296
+ },
297
+ {
298
+ name: 'get_cursor_position',
299
+ description: 'Return the current mouse cursor position in screen points',
300
+ inputSchema: { type: 'object', additionalProperties: false, properties: {} },
301
+ },
302
+ {
303
+ name: 'get_accessibility_tree',
304
+ description: 'Return a lightweight desktop snapshot: running apps and visible windows with bounds and z-order',
305
+ inputSchema: { type: 'object', additionalProperties: false, properties: {} },
306
+ },
307
+ {
308
+ name: 'get_window_state',
309
+ description: 'Walk an app AX tree and return a Markdown rendering of its UI with actionable element indices',
310
+ inputSchema: {
311
+ type: 'object',
312
+ additionalProperties: false,
313
+ properties: {
314
+ pid: { type: 'integer', description: 'Target process ID' },
315
+ window_id: { type: 'integer', description: 'Target window ID from list_windows' },
316
+ query: { type: 'string', description: 'Case-insensitive filter for tree_markdown' },
317
+ capture_mode: {
318
+ type: 'string',
319
+ enum: ['som', 'vision', 'ax'],
320
+ description: 'som=AX+screenshot (default), vision=screenshot only, ax=AX only',
321
+ },
322
+ },
323
+ required: ['pid', 'window_id'],
324
+ },
325
+ },
326
+ {
327
+ name: 'list_windows',
328
+ description: 'List all layer-0 top-level windows known to WindowServer',
329
+ inputSchema: {
330
+ type: 'object',
331
+ additionalProperties: false,
332
+ properties: {
333
+ pid: { type: 'integer', description: 'Optional pid filter' },
334
+ on_screen_only: {
335
+ type: 'boolean',
336
+ description: 'When true, drop windows not on current Space. Default false',
337
+ },
338
+ },
339
+ },
340
+ },
341
+ {
342
+ name: 'list_apps',
343
+ description: 'List macOS apps (running and installed) with state flags, pid, bundle_id',
344
+ inputSchema: { type: 'object', additionalProperties: false, properties: {} },
345
+ },
346
+ {
347
+ name: 'launch_app',
348
+ description: 'Launch a macOS app in the background without stealing focus',
349
+ inputSchema: {
350
+ type: 'object',
351
+ additionalProperties: false,
352
+ properties: {
353
+ bundle_id: {
354
+ type: 'string',
355
+ description: 'App bundle identifier, e.g. com.apple.calculator. Preferred over name',
356
+ },
357
+ name: {
358
+ type: 'string',
359
+ description: 'App display name. Used only when bundle_id is absent',
360
+ },
361
+ urls: {
362
+ type: 'array',
363
+ items: { type: 'string' },
364
+ description: 'File paths or URLs to open with the app',
365
+ },
366
+ creates_new_application_instance: {
367
+ type: 'boolean',
368
+ description: 'Force a new app instance even if already running',
369
+ },
370
+ },
371
+ },
372
+ },
373
+ {
374
+ name: 'kill_app',
375
+ description: 'Force-terminate a process by pid (kill -9 equivalent)',
376
+ inputSchema: {
377
+ type: 'object',
378
+ additionalProperties: false,
379
+ properties: { pid: { type: 'integer', description: 'PID of the process to terminate' } },
380
+ required: ['pid'],
381
+ },
382
+ },
383
+ ];
24
384
  export default function computerUseExtension(pi) {
25
385
  let config;
26
386
  let client;
@@ -33,10 +393,8 @@ export default function computerUseExtension(pi) {
33
393
  connected = true;
34
394
  }
35
395
  }
36
- async function registerUpstreamTools() {
37
- await ensureConnected();
38
- const upstreamTools = await client.listAllTools();
39
- for (const tool of upstreamTools) {
396
+ function registerTools(tools) {
397
+ for (const tool of tools) {
40
398
  if (EXCLUDED_TOOLS.has(tool.name))
41
399
  continue;
42
400
  const prefixedName = `${TOOL_PREFIX}${tool.name}`;
@@ -47,7 +405,23 @@ export default function computerUseExtension(pi) {
47
405
  description: tool.description ?? '',
48
406
  parameters: Type.Unsafe(tool.inputSchema),
49
407
  async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
50
- await ensureConnected();
408
+ try {
409
+ await ensureConnected();
410
+ }
411
+ catch (connErr) {
412
+ const msg = connErr instanceof Error ? connErr.message : String(connErr);
413
+ ctx.ui.notify(`pi-computer-use: cannot connect to cua-driver — ${msg}`, 'warning');
414
+ return {
415
+ content: [
416
+ {
417
+ type: 'text',
418
+ text: `Failed to connect to cua-driver: ${msg}. ${permissionHint()}`,
419
+ },
420
+ ],
421
+ details: undefined,
422
+ isError: true,
423
+ };
424
+ }
51
425
  const result = await client.callTool(originalName, params);
52
426
  if (result.isError) {
53
427
  const errorText = result.content?.map((c) => c.text ?? '').join('') ?? '';
@@ -60,17 +434,6 @@ export default function computerUseExtension(pi) {
60
434
  };
61
435
  }
62
436
  }
63
- if (originalName === 'screenshot' && config?.visionModel) {
64
- const imageContent = result.content?.find((c) => c.type === 'image' && c.data);
65
- if (imageContent?.data) {
66
- const callVision = createPiVisionCaller(config.visionModel, ctx);
67
- const analysis = await callVision('Describe the full screen: identify all visible windows, UI elements, buttons, text fields, and their positions.', imageContent.data, imageContent.mimeType ?? 'image/png');
68
- return {
69
- content: [{ type: 'text', text: analysis }],
70
- details: undefined,
71
- };
72
- }
73
- }
74
437
  const content = [];
75
438
  if (result.content) {
76
439
  for (const item of result.content) {
@@ -89,7 +452,7 @@ export default function computerUseExtension(pi) {
89
452
  });
90
453
  }
91
454
  }
92
- async function registerVisionTool() {
455
+ function registerVisionTool() {
93
456
  if (!config?.visionModel)
94
457
  return;
95
458
  const visionConfig = config.visionModel;
@@ -103,7 +466,23 @@ export default function computerUseExtension(pi) {
103
466
  })),
104
467
  }),
105
468
  async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
106
- await ensureConnected();
469
+ try {
470
+ await ensureConnected();
471
+ }
472
+ catch (connErr) {
473
+ const msg = connErr instanceof Error ? connErr.message : String(connErr);
474
+ ctx.ui.notify(`pi-computer-use: cannot connect to cua-driver — ${msg}`, 'warning');
475
+ return {
476
+ content: [
477
+ {
478
+ type: 'text',
479
+ text: `Failed to connect to cua-driver: ${msg}. ${permissionHint()}`,
480
+ },
481
+ ],
482
+ details: undefined,
483
+ isError: true,
484
+ };
485
+ }
107
486
  const screenshotResult = await client.callTool('screenshot', {});
108
487
  const imageContent = screenshotResult.content?.find((c) => c.type === 'image' && c.data);
109
488
  if (!imageContent?.data) {
@@ -128,22 +507,34 @@ export default function computerUseExtension(pi) {
128
507
  config = resolveConfig(loadConfigFromFile({ cwd: ctx.cwd }));
129
508
  client = new CuaDriverClient(config);
130
509
  connected = false;
131
- await registerUpstreamTools();
132
- await registerVisionTool();
510
+ let upstreamTools;
133
511
  try {
134
- const permResult = await client.callTool('check_permissions', {});
135
- const structured = permResult.structuredContent;
136
- if (structured) {
137
- if (!structured.accessibility) {
138
- ctx.ui.notify('pi-computer-use: Accessibility not granted. Go to System Settings → Privacy & Security → Accessibility to enable.', 'warning');
139
- }
140
- if (!structured.screen_recording) {
141
- ctx.ui.notify('pi-computer-use: Screen Recording not granted. Go to System Settings → Privacy & Security → Screen & System Audio Recording to enable.', 'warning');
512
+ await client.connect();
513
+ connected = true;
514
+ upstreamTools = await client.listAllTools();
515
+ }
516
+ catch (err) {
517
+ const msg = err instanceof Error ? err.message : String(err);
518
+ ctx.ui.notify(`pi-computer-use: cua-driver failed to start — ${msg}. Tools registered but may fail until permissions are granted.`, 'warning');
519
+ }
520
+ registerTools(upstreamTools ?? FALLBACK_TOOLS);
521
+ registerVisionTool();
522
+ if (connected) {
523
+ try {
524
+ const permResult = await client.callTool('check_permissions', {});
525
+ const structured = permResult.structuredContent;
526
+ if (structured) {
527
+ if (!structured.accessibility) {
528
+ ctx.ui.notify(`pi-computer-use: ${accessibilityHint()}`, 'warning');
529
+ }
530
+ if (!structured.screen_recording) {
531
+ ctx.ui.notify(`pi-computer-use: ${screenRecordingHint()}`, 'warning');
532
+ }
142
533
  }
143
534
  }
144
- }
145
- catch {
146
- // permission check is best-effort — do not block session start
535
+ catch {
536
+ // permission check is best-effort
537
+ }
147
538
  }
148
539
  });
149
540
  pi.on('session_shutdown', async () => {
@@ -155,10 +546,10 @@ export default function computerUseExtension(pi) {
155
546
  }
156
547
  function formatToolError(toolName, errorText, params) {
157
548
  if (errorText.includes('ax_not_granted')) {
158
- return 'Accessibility permission not granted. The user needs to enable it in System Settings → Privacy & Security → Accessibility, then restart the app.';
549
+ return accessibilityHint();
159
550
  }
160
551
  if (errorText.includes('sc_not_granted')) {
161
- return 'Screen Recording permission not granted. The user needs to enable it in System Settings → Privacy & Security → Screen & System Audio Recording, then restart the app.';
552
+ return screenRecordingHint();
162
553
  }
163
554
  if (toolName === 'screenshot' || errorText.includes('screencapture failed')) {
164
555
  const windowId = params.window_id;
@@ -166,7 +557,7 @@ function formatToolError(toolName, errorText, params) {
166
557
  if (errorText.includes('screencapture failed')) {
167
558
  return [
168
559
  `Screenshot failed for window ${windowId}. Possible causes:`,
169
- '1. Screen Recording permission not granted — enable in System Settings → Privacy & Security → Screen & System Audio Recording, then restart the app.',
560
+ `1. ${screenRecordingHint()}`,
170
561
  '2. The window_id is stale — the window may have been closed or recreated (e.g. after navigation in Electron apps). Re-fetch window list to get current IDs.',
171
562
  '3. The window is minimized or not yet rendered.',
172
563
  `Try capturing without window_id (full screen) as a fallback, or verify the window still exists.`,
@@ -178,7 +569,7 @@ function formatToolError(toolName, errorText, params) {
178
569
  }
179
570
  else {
180
571
  if (errorText.includes('screencapture failed')) {
181
- return 'Screenshot failed for the main display. Screen Recording permission may not be granted — enable in System Settings → Privacy & Security → Screen & System Audio Recording, then restart the app.';
572
+ return `Screenshot failed for the main display. ${screenRecordingHint()}`;
182
573
  }
183
574
  }
184
575
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKrD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAI/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxB,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB/B,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnF,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAWI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,iBAAiB;CAmBhC"}
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKrD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAI/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxB,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB/B,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnF,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAWI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,iBAAiB;CAiChC"}
@@ -1,4 +1,4 @@
1
- import { existsSync } from 'node:fs';
1
+ import { accessSync, chmodSync, constants, existsSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
@@ -65,6 +65,19 @@ export class CuaDriverClient {
65
65
  throw new Error(`[pi-computer-use] cua-driver binary not found at ${binPath}. ` +
66
66
  `Platform "${platform}" may not be supported, or set mode: "path" with binaryPath in config.`);
67
67
  }
68
+ try {
69
+ accessSync(binPath, constants.X_OK);
70
+ }
71
+ catch {
72
+ try {
73
+ chmodSync(binPath, 0o755);
74
+ }
75
+ catch (chmodErr) {
76
+ throw new Error(`[pi-computer-use] cua-driver binary at ${binPath} is not executable. ` +
77
+ `Auto-fix failed (${chmodErr instanceof Error ? chmodErr.message : String(chmodErr)}). ` +
78
+ `Run: sudo chmod +x "${binPath}"`);
79
+ }
80
+ }
68
81
  return binPath;
69
82
  }
70
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAIjF,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,eAAe;IAClB,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAgC,IAAI,CAAC;IAC9C,MAAM,CAAoB;IAElC,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC;YACxC,OAAO,EAAE,UAAU;YACnB,IAAI;YACJ,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QAE9F,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,MAA0B,CAAC;QAC/B,GAAG,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;gBAC1E,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,CAAC,QAAQ,MAAM,EAAE;QAEjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,IAA6B;QAK7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAEnE,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE;YACvE,OAAO,EAAE,cAAc;SACxB,CAAC,CAGD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACrF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,IAAI;gBAC7D,aAAa,QAAQ,wEAAwE,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CACb,0CAA0C,OAAO,sBAAsB;oBACrE,oBAAoB,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;oBACxF,uBAAuB,OAAO,GAAG,CACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/pi-computer-use",
3
- "version": "0.1.2-beta.4",
3
+ "version": "0.1.2-beta.6",
4
4
  "description": "Pi extension for desktop automation via cua-driver-rs with computer_use_ prefixed tools",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@modelcontextprotocol/sdk": "^1.29.0",
49
- "@amaster.ai/pi-shared": "0.1.2-beta.4"
49
+ "@amaster.ai/pi-shared": "0.1.2-beta.6"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@earendil-works/pi-ai": ">=0.74.0",