# ComputerUse (/docs/typescript-sdk/computer-use)

## ComputerUseService [#computeruseservice]

**Properties**:

- `service` _AddonProcessesService_
- `mouse` _MouseService_
- `keyboard` _KeyboardService_
- `screen` _ScreenService_
- `display` _DisplayService_
- `a11y` _A11yService_
- `recording` _RecordingService_

### Constructors [#constructors]

#### Constructor [#constructor]

```ts
new ComputerUseService(transport: ComputerUseTransport): ComputerUseService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `ComputerUseService`

### Methods [#methods]

#### restart() [#restart]

```ts
restart(): Promise<ComputerUseRestartResponse>;
```

**Returns**:

- `Promise<ComputerUseRestartResponse>`

#### start() [#start]

```ts
start(): Promise<ComputerUseLifecycleResponse>;
```

**Returns**:

- `Promise<ComputerUseLifecycleResponse>`

#### status() [#status]

```ts
status(): Promise<ComputerUseStatusResponse>;
```

**Returns**:

- `Promise<ComputerUseStatusResponse>`

#### stop() [#stop]

```ts
stop(): Promise<ComputerUseLifecycleResponse>;
```

**Returns**:

- `Promise<ComputerUseLifecycleResponse>`

***

## AddonProcessesService [#addonprocessesservice]

### Constructors [#constructors-1]

#### Constructor [#constructor-1]

```ts
new AddonProcessesService(transport: ComputerUseTransport): AddonProcessesService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `AddonProcessesService`

### Methods [#methods-1]

#### errors() [#errors]

```ts
errors(name: string): Promise<ComputerUseProcessErrorsResponse>;
```

**Parameters**:

- `name` _string_

**Returns**:

- `Promise<ComputerUseProcessErrorsResponse>`

#### logs() [#logs]

```ts
logs(name: string): Promise<ComputerUseProcessLogsResponse>;
```

**Parameters**:

- `name` _string_

**Returns**:

- `Promise<ComputerUseProcessLogsResponse>`

#### restart() [#restart-1]

```ts
restart(name: string): Promise<ComputerUseProcessRestartResponse>;
```

**Parameters**:

- `name` _string_

**Returns**:

- `Promise<ComputerUseProcessRestartResponse>`

#### status() [#status-1]

```ts
status(): Promise<Record<string, ComputerUseProcessStatus>>;
```

**Returns**:

- `Promise<Record<string, ComputerUseProcessStatus>>`

#### status() [#status-2]

```ts
status(name: string): Promise<ComputerUseProcessRunningStatus>;
```

**Parameters**:

- `name` _string_

**Returns**:

- `Promise<ComputerUseProcessRunningStatus>`

***

## A11yService [#a11yservice]

### Constructors [#constructors-2]

#### Constructor [#constructor-2]

```ts
new A11yService(transport: ComputerUseTransport): A11yService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `A11yService`

### Methods [#methods-2]

#### find() [#find]

```ts
find(request: ComputerUseA11yFindRequest): Promise<ComputerUseA11yFindResponse>;
```

**Parameters**:

- `request` _ComputerUseA11yFindRequest_

**Returns**:

- `Promise<ComputerUseA11yFindResponse>`

#### focus() [#focus]

```ts
focus(request: ComputerUseA11yFocusRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseA11yFocusRequest_

**Returns**:

- `Promise<void>`

#### invoke() [#invoke]

```ts
invoke(request: ComputerUseA11yInvokeRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseA11yInvokeRequest_

**Returns**:

- `Promise<void>`

#### setValue() [#setvalue]

```ts
setValue(request: ComputerUseA11ySetValueRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseA11ySetValueRequest_

**Returns**:

- `Promise<void>`

#### tree() [#tree]

```ts
tree(options: ComputerUseA11yTreeOptions): Promise<ComputerUseA11yTreeResponse>;
```

**Parameters**:

- `options` _ComputerUseA11yTreeOptions_

**Returns**:

- `Promise<ComputerUseA11yTreeResponse>`

***

## DisplayService [#displayservice]

### Constructors [#constructors-3]

#### Constructor [#constructor-3]

```ts
new DisplayService(transport: ComputerUseTransport): DisplayService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `DisplayService`

### Methods [#methods-3]

#### info() [#info]

```ts
info(): Promise<ComputerUseDisplayInfoResponse>;
```

**Returns**:

- `Promise<ComputerUseDisplayInfoResponse>`

#### windows() [#windows]

```ts
windows(): Promise<ComputerUseDisplayWindowsResponse>;
```

**Returns**:

- `Promise<ComputerUseDisplayWindowsResponse>`

***

## KeyboardService [#keyboardservice]

### Constructors [#constructors-4]

#### Constructor [#constructor-4]

```ts
new KeyboardService(transport: ComputerUseTransport): KeyboardService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `KeyboardService`

### Methods [#methods-4]

#### hotkey() [#hotkey]

```ts
hotkey(request: ComputerUseKeyboardHotkeyRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseKeyboardHotkeyRequest_

**Returns**:

- `Promise<void>`

#### key() [#key]

```ts
key(request: ComputerUseKeyboardKeyRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseKeyboardKeyRequest_

**Returns**:

- `Promise<void>`

#### type() [#type]

```ts
type(request: ComputerUseKeyboardTypeRequest): Promise<void>;
```

**Parameters**:

- `request` _ComputerUseKeyboardTypeRequest_

**Returns**:

- `Promise<void>`

***

## MouseService [#mouseservice]

### Constructors [#constructors-5]

#### Constructor [#constructor-5]

```ts
new MouseService(transport: ComputerUseTransport): MouseService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `MouseService`

### Methods [#methods-5]

#### click() [#click]

```ts
click(request: ComputerUseMouseClickRequest): Promise<ComputerUsePoint>;
```

**Parameters**:

- `request` _ComputerUseMouseClickRequest_

**Returns**:

- `Promise<ComputerUsePoint>`

#### drag() [#drag]

```ts
drag(request: ComputerUseMouseDragRequest): Promise<ComputerUsePoint>;
```

**Parameters**:

- `request` _ComputerUseMouseDragRequest_

**Returns**:

- `Promise<ComputerUsePoint>`

#### move() [#move]

```ts
move(request: ComputerUseMouseMoveRequest): Promise<ComputerUsePoint>;
```

**Parameters**:

- `request` _ComputerUseMouseMoveRequest_

**Returns**:

- `Promise<ComputerUsePoint>`

#### position() [#position]

```ts
position(): Promise<ComputerUsePoint>;
```

**Returns**:

- `Promise<ComputerUsePoint>`

#### scroll() [#scroll]

```ts
scroll(request: ComputerUseMouseScrollRequest): Promise<ComputerUseScrollResponse>;
```

**Parameters**:

- `request` _ComputerUseMouseScrollRequest_

**Returns**:

- `Promise<ComputerUseScrollResponse>`

***

## RecordingService [#recordingservice]

### Constructors [#constructors-6]

#### Constructor [#constructor-6]

```ts
new RecordingService(transport: ComputerUseTransport): RecordingService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `RecordingService`

### Methods [#methods-6]

#### delete() [#delete]

```ts
delete(id: string): Promise<void>;
```

**Parameters**:

- `id` _string_

**Returns**:

- `Promise<void>`

#### download() [#download]

```ts
download(id: string): Promise<Uint8Array>;
```

**Parameters**:

- `id` _string_

**Returns**:

- `Promise<Uint8Array>`

#### get() [#get]

```ts
get(id: string): Promise<ComputerUseRecording>;
```

**Parameters**:

- `id` _string_

**Returns**:

- `Promise<ComputerUseRecording>`

#### list() [#list]

```ts
list(): Promise<ComputerUseRecordingsResponse>;
```

**Returns**:

- `Promise<ComputerUseRecordingsResponse>`

#### start() [#start-1]

```ts
start(request: ComputerUseRecordingStartRequest = {}): Promise<ComputerUseRecording>;
```

**Parameters**:

- `request` _ComputerUseRecordingStartRequest = \{\}_

**Returns**:

- `Promise<ComputerUseRecording>`

#### stop() [#stop-1]

```ts
stop(request: ComputerUseRecordingStopRequest): Promise<ComputerUseRecording>;
```

**Parameters**:

- `request` _ComputerUseRecordingStopRequest_

**Returns**:

- `Promise<ComputerUseRecording>`

***

## ScreenService [#screenservice]

### Constructors [#constructors-7]

#### Constructor [#constructor-7]

```ts
new ScreenService(transport: ComputerUseTransport): ScreenService;
```

**Parameters**:

- `transport` _ComputerUseTransport_

**Returns**:

- `ScreenService`

### Methods [#methods-7]

#### screenshot() [#screenshot]

```ts
screenshot(
   options: ComputerUseScreenshotOptions = {}): Promise<ComputerUseScreenshotResponse>;
```

Capture the screen, or `options.region` of it. Setting any of `format`,
`quality` or `scale` returns a compressed image.

**Parameters**:

- `options` _ComputerUseScreenshotOptions = \{\}_

**Returns**:

- `Promise<ComputerUseScreenshotResponse>`

***

## ComputerUseTransport [#computerusetransport]

### Methods [#methods-8]

#### delete() [#delete-1]

```ts
delete<T>(path: string): Promise<T>;
```

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<T>`

#### get() [#get-1]

```ts
get<T>(path: string, config?: { params?: Record<string, unknown> }): Promise<T>;
```

**Parameters**:

- `path` _string_
- `config?` _\{ params?: Record\<string, unknown\> \}_

**Returns**:

- `Promise<T>`

#### getBytes() [#getbytes]

```ts
getBytes(path: string): Promise<ArrayBuffer>;
```

**Parameters**:

- `path` _string_

**Returns**:

- `Promise<ArrayBuffer>`

#### post() [#post]

```ts
post<T>(path: string, body?: unknown): Promise<T>;
```

**Parameters**:

- `path` _string_
- `body?` _unknown_

**Returns**:

- `Promise<T>`

***

## ComputerUseActivityStatus [#computeruseactivitystatus]

```ts
type ComputerUseActivityStatus = 'active' | 'inactive' | 'unknown'
```

***

## ComputerUseDesktopState [#computerusedesktopstate]

```ts
type ComputerUseDesktopState = 'not_started' | 'starting' | 'ready' | 'failed' | 'unknown'
```

***

## ComputerUseDesktopFailureCode [#computerusedesktopfailurecode]

```ts
type ComputerUseDesktopFailureCode =
  | 'desktop_exited'
  | 'addon_crashed'
  | 'start_failed'
  | 'start_interrupted'
  | 'session_ended'
  | 'session_replaced'
  | 'state_corrupt'
  | 'state_persistence_failed'
  | 'unknown'
```

***

## ComputerUseDesktopFailure [#computerusedesktopfailure]

**Properties**:

- `code` _ComputerUseDesktopFailureCode_
- `rawCode` _string_
- `message` _string_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseFailedStatus [#computerusefailedstatus]

**Properties**:

- `status` _'inactive'_
- `desktop` _'failed'_
- `cause` _ComputerUseDesktopFailure_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseNotStartedStatus [#computerusenotstartedstatus]

**Properties**:

- `status` _'inactive'_
- `desktop` _'not_started'_
- `cause?` _never_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseReadyStatus [#computerusereadystatus]

**Properties**:

- `status` _'active'_
- `desktop` _'ready'_
- `cause?` _never_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseRestartResponse [#computeruserestartresponse]

**Properties**:

- `message` _string_
- `status` _'active'_
- `desktop` _'ready'_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseStartingStatus [#computerusestartingstatus]

**Properties**:

- `status` _'inactive'_
- `desktop` _'starting'_
- `cause?` _never_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseUnknownStatus [#computeruseunknownstatus]

A `(status, desktop)` pair this SDK release does not recognize.
`rawStatus` / `rawDesktop` carry the response values; recognized variants need no raw sibling, since
their typed values are the wire values.

**Properties**:

- `status` _'unknown'_
- `desktop` _'unknown'_
- `rawStatus` _string_
- `rawDesktop` _string_
- `cause?` _ComputerUseDesktopFailure_ - The failure attached to the unrecognized state, when present.
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseA11yFindRequest [#computerusea11yfindrequest]

**Properties**:

- `scope` _ComputerUseA11yScope_
- `pid?` _number_
- `role?` _string_
- `name?` _string_
- `nameMatch?` _ComputerUseA11yNameMatch_
- `states?` _string\[\]_
- `limit?` _number_

***

## ComputerUseA11yFindResponse [#computerusea11yfindresponse]

**Properties**:

- `matches` _ComputerUseAccessibilityNode\[\]_
- `truncated` _boolean_

***

## ComputerUseA11yFocusRequest [#computerusea11yfocusrequest]

**Properties**:

- `id` _string_

***

## ComputerUseA11yInvokeRequest [#computerusea11yinvokerequest]

**Properties**:

- `id` _string_
- `action?` _string_

***

## ComputerUseA11yNameMatch [#computerusea11ynamematch]

```ts
type ComputerUseA11yNameMatch = 'exact' | 'substring' | 'regex'
```

***

## ComputerUseA11yScope [#computerusea11yscope]

```ts
type ComputerUseA11yScope = 'focused' | 'pid' | 'all'
```

***

## ComputerUseA11ySetValueRequest [#computerusea11ysetvaluerequest]

**Properties**:

- `id` _string_
- `value` _string_

***

## ComputerUseA11yTreeOptions [#computerusea11ytreeoptions]

**Properties**:

- `scope` _ComputerUseA11yScope_
- `pid?` _number_
- `maxDepth?` _number_

***

## ComputerUseA11yTreeResponse [#computerusea11ytreeresponse]

**Properties**:

- `root` _ComputerUseAccessibilityNode_
- `truncated` _boolean_

***

## ComputerUseAccessibilityBounds [#computeruseaccessibilitybounds]

**Properties**:

- `x` _number_
- `y` _number_
- `width` _number_
- `height` _number_

***

## ComputerUseAccessibilityNode [#computeruseaccessibilitynode]

**Properties**:

- `id` _string_
- `role` _string_
- `name` _string_
- `description?` _string_
- `value?` _string_ - A control's current value (macOS). Never set for password fields.
- `valueTruncated` _boolean_ - `value` was cut at the platform's cap. `false` when uncut or not reported; the SDK always fills it.
- `bounds` _ComputerUseAccessibilityBounds_
- `states` _string\[\]_
- `actions?` _string\[\]_
- `children?` _ComputerUseAccessibilityNode\[\]_

***

## ComputerUseDisplay [#computerusedisplay]

**Properties**:

- `id` _number_
- `x` _number_
- `y` _number_
- `width` _number_
- `height` _number_
- `isActive` _boolean_

***

## ComputerUseDisplayInfoResponse [#computerusedisplayinforesponse]

**Properties**:

- `displays` _ComputerUseDisplay\[\]_

***

## ComputerUseDisplayWindowsResponse [#computerusedisplaywindowsresponse]

**Properties**:

- `windows` _ComputerUseWindow\[\]_

***

## ComputerUseKeyboardHotkeyRequest [#computerusekeyboardhotkeyrequest]

**Properties**:

- `keys` _string_

***

## ComputerUseKeyboardKeyRequest [#computerusekeyboardkeyrequest]

**Properties**:

- `key` _string_
- `modifiers?` _ComputerUseKeyboardModifier\[\]_

***

## ComputerUseKeyboardModifier [#computerusekeyboardmodifier]

```ts
type ComputerUseKeyboardModifier = 'ctrl' | 'alt' | 'shift' | 'cmd'
```

***

## ComputerUseKeyboardTypeRequest [#computerusekeyboardtyperequest]

**Properties**:

- `text` _string_
- `delay?` _number_

***

## ComputerUseLifecycleResponse [#computeruselifecycleresponse]

**Properties**:

- `message` _string_
- `status` _Record\<string, ComputerUseProcessStatus\>_

***

## ComputerUseMouseButton [#computerusemousebutton]

```ts
type ComputerUseMouseButton = 'left' | 'right' | 'middle'
```

***

## ComputerUseMouseClickRequest [#computerusemouseclickrequest]

**Properties**:

- `x` _number_
- `y` _number_
- `button?` _ComputerUseMouseButton_
- `double?` _boolean_

***

## ComputerUseMouseDragRequest [#computerusemousedragrequest]

**Properties**:

- `startX` _number_
- `startY` _number_
- `endX` _number_
- `endY` _number_
- `button` _ComputerUseMouseButton_

***

## ComputerUseMouseMoveRequest [#computerusemousemoverequest]

**Properties**:

- `x` _number_
- `y` _number_

***

## ComputerUseMouseScrollRequest [#computerusemousescrollrequest]

**Properties**:

- `x` _number_
- `y` _number_
- `direction` _ComputerUseScrollDirection_
- `amount?` _number_

***

## ComputerUsePoint [#computerusepoint]

**Properties**:

- `x` _number_
- `y` _number_

***

## ComputerUseProcessErrorsResponse [#computeruseprocesserrorsresponse]

**Properties**:

- `processName` _string_
- `errors` _string_

***

## ComputerUseProcessLogsResponse [#computeruseprocesslogsresponse]

**Properties**:

- `processName` _string_
- `logs` _string_

***

## ComputerUseProcessRestartResponse [#computeruseprocessrestartresponse]

**Properties**:

- `message` _string_
- `processName` _string_

***

## ComputerUseProcessRunningStatus [#computeruseprocessrunningstatus]

**Properties**:

- `processName` _string_
- `running` _boolean_

***

## ComputerUseProcessStatus [#computeruseprocessstatus]

**Properties**:

- `running?` _boolean_
- `priority?` _number_
- `autoRestart?` _boolean_
- `pid?` _number_
- `failed?` _boolean_
- `restartAttempts?` _number_
- `restartBackoffMs?` _number_
- `status?` _string_
- `extraFields?` _Record\<string, unknown\>_

***

## ComputerUseRecording [#computeruserecording]

**Properties**:

- `id` _string_
- `fileName` _string_
- `filePath` _string_
- `startTime` _string_
- `endTime?` _string_
- `status` _string_
- `durationSeconds?` _number_
- `sizeBytes?` _number_

***

## ComputerUseRecordingsResponse [#computeruserecordingsresponse]

**Properties**:

- `recordings` _ComputerUseRecording\[\]_

***

## ComputerUseRecordingStartRequest [#computeruserecordingstartrequest]

**Properties**:

- `label?` _string_

***

## ComputerUseRecordingStopRequest [#computeruserecordingstoprequest]

**Properties**:

- `id` _string_

***

## ComputerUseRegion [#computeruseregion]

**Properties**:

- `x` _number_
- `y` _number_
- `width` _number_
- `height` _number_

***

## ComputerUseScreenshotFormat [#computerusescreenshotformat]

```ts
type ComputerUseScreenshotFormat = 'png' | 'jpeg'
```

***

## ComputerUseScreenshotOptions [#computerusescreenshotoptions]

Options for `screen.screenshot()`. `region` captures only that rectangle;
any of `format` / `quality` / `scale` returns a compressed image.

**Properties**:

- `region?` _ComputerUseRegion_
- `format?` _ComputerUseScreenshotFormat_
- `quality?` _number_
- `scale?` _number_
- `showCursor?` _boolean_

***

## ComputerUseScreenshotResponse [#computerusescreenshotresponse]

**Properties**:

- `screenshot` _string_
- `cursorPosition?` _ComputerUsePoint_
- `sizeBytes?` _number_

***

## ComputerUseScrollDirection [#computerusescrolldirection]

```ts
type ComputerUseScrollDirection = 'up' | 'down'
```

***

## ComputerUseScrollResponse [#computerusescrollresponse]

**Properties**:

- `success` _boolean_

***

## ComputerUseStatusResponse [#computerusestatusresponse]

```ts
type ComputerUseStatusResponse =
  | ComputerUseNotStartedStatus
  | ComputerUseStartingStatus
  | ComputerUseReadyStatus
  | ComputerUseFailedStatus
  | ComputerUseUnknownStatus
```

***

## ComputerUseWindow [#computerusewindow]

**Properties**:

- `id` _number_
- `title` _string_
- `x` _number_
- `y` _number_
- `width` _number_
- `height` _number_
- `isActive` _boolean_
