mirror of
https://github.com/trycua/computer.git
synced 2026-01-06 05:20:02 -06:00
Added TS Usage
This commit is contained in:
@@ -11,105 +11,220 @@ These commands map to the same actions available in the [Computer Server API Com
|
||||
|
||||
Execute shell commands and get detailed results:
|
||||
|
||||
```python
|
||||
# Run shell command
|
||||
result = await computer.interface.run_command(cmd)
|
||||
# result.stdout, result.stderr, result.returncode
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Run shell command
|
||||
result = await computer.interface.run_command(cmd)
|
||||
# result.stdout, result.stderr, result.returncode
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Run shell command
|
||||
const result = await computer.interface.runCommand(cmd);
|
||||
// result.stdout, result.stderr, result.returncode
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Mouse Actions
|
||||
|
||||
Precise mouse control and interaction:
|
||||
|
||||
```python
|
||||
# Basic clicks
|
||||
await computer.interface.left_click(x, y) # Left click at coordinates
|
||||
await computer.interface.right_click(x, y) # Right click at coordinates
|
||||
await computer.interface.double_click(x, y) # Double click at coordinates
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Basic clicks
|
||||
await computer.interface.left_click(x, y) # Left click at coordinates
|
||||
await computer.interface.right_click(x, y) # Right click at coordinates
|
||||
await computer.interface.double_click(x, y) # Double click at coordinates
|
||||
|
||||
# Cursor movement and dragging
|
||||
await computer.interface.move_cursor(x, y) # Move cursor to coordinates
|
||||
await computer.interface.drag_to(x, y, duration) # Drag to coordinates
|
||||
await computer.interface.get_cursor_position() # Get current cursor position
|
||||
# Cursor movement and dragging
|
||||
await computer.interface.move_cursor(x, y) # Move cursor to coordinates
|
||||
await computer.interface.drag_to(x, y, duration) # Drag to coordinates
|
||||
await computer.interface.get_cursor_position() # Get current cursor position
|
||||
|
||||
# Advanced mouse control
|
||||
await computer.interface.mouse_down(x, y, button="left") # Press and hold a mouse button
|
||||
await computer.interface.mouse_up(x, y, button="left") # Release a mouse button
|
||||
```
|
||||
# Advanced mouse control
|
||||
await computer.interface.mouse_down(x, y, button="left") # Press and hold a mouse button
|
||||
await computer.interface.mouse_up(x, y, button="left") # Release a mouse button
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Basic clicks
|
||||
await computer.interface.leftClick(x, y); // Left click at coordinates
|
||||
await computer.interface.rightClick(x, y); // Right click at coordinates
|
||||
await computer.interface.doubleClick(x, y); // Double click at coordinates
|
||||
|
||||
// Cursor movement and dragging
|
||||
await computer.interface.moveCursor(x, y); // Move cursor to coordinates
|
||||
await computer.interface.dragTo(x, y, duration); // Drag to coordinates
|
||||
await computer.interface.getCursorPosition(); // Get current cursor position
|
||||
|
||||
// Advanced mouse control
|
||||
await computer.interface.mouseDown(x, y, "left"); // Press and hold a mouse button
|
||||
await computer.interface.mouseUp(x, y, "left"); // Release a mouse button
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Keyboard Actions
|
||||
|
||||
Text input and key combinations:
|
||||
|
||||
```python
|
||||
# Text input
|
||||
await computer.interface.type_text("Hello") # Type text
|
||||
await computer.interface.press_key("enter") # Press a single key
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Text input
|
||||
await computer.interface.type_text("Hello") # Type text
|
||||
await computer.interface.press_key("enter") # Press a single key
|
||||
|
||||
# Key combinations and advanced control
|
||||
await computer.interface.hotkey("command", "c") # Press key combination
|
||||
await computer.interface.key_down("command") # Press and hold a key
|
||||
await computer.interface.key_up("command") # Release a key
|
||||
```
|
||||
# Key combinations and advanced control
|
||||
await computer.interface.hotkey("command", "c") # Press key combination
|
||||
await computer.interface.key_down("command") # Press and hold a key
|
||||
await computer.interface.key_up("command") # Release a key
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Text input
|
||||
await computer.interface.typeText("Hello"); // Type text
|
||||
await computer.interface.pressKey("enter"); // Press a single key
|
||||
|
||||
// Key combinations and advanced control
|
||||
await computer.interface.hotkey("command", "c"); // Press key combination
|
||||
await computer.interface.keyDown("command"); // Press and hold a key
|
||||
await computer.interface.keyUp("command"); // Release a key
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Scrolling Actions
|
||||
|
||||
Mouse wheel and scrolling control:
|
||||
|
||||
```python
|
||||
# Scrolling
|
||||
await computer.interface.scroll(x, y) # Scroll the mouse wheel
|
||||
await computer.interface.scroll_down(clicks) # Scroll down
|
||||
await computer.interface.scroll_up(clicks) # Scroll up
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Scrolling
|
||||
await computer.interface.scroll(x, y) # Scroll the mouse wheel
|
||||
await computer.interface.scroll_down(clicks) # Scroll down
|
||||
await computer.interface.scroll_up(clicks) # Scroll up
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Scrolling
|
||||
await computer.interface.scroll(x, y); // Scroll the mouse wheel
|
||||
await computer.interface.scrollDown(clicks); // Scroll down
|
||||
await computer.interface.scrollUp(clicks); // Scroll up
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Screen Actions
|
||||
|
||||
Screen capture and display information:
|
||||
|
||||
```python
|
||||
# Screen operations
|
||||
await computer.interface.screenshot() # Take a screenshot
|
||||
await computer.interface.get_screen_size() # Get screen dimensions
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Screen operations
|
||||
await computer.interface.screenshot() # Take a screenshot
|
||||
await computer.interface.get_screen_size() # Get screen dimensions
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Screen operations
|
||||
await computer.interface.screenshot(); // Take a screenshot
|
||||
await computer.interface.getScreenSize(); // Get screen dimensions
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Clipboard Actions
|
||||
|
||||
System clipboard management:
|
||||
|
||||
```python
|
||||
# Clipboard operations
|
||||
await computer.interface.set_clipboard(text) # Set clipboard content
|
||||
await computer.interface.copy_to_clipboard() # Get clipboard content
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Clipboard operations
|
||||
await computer.interface.set_clipboard(text) # Set clipboard content
|
||||
await computer.interface.copy_to_clipboard() # Get clipboard content
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Clipboard operations
|
||||
await computer.interface.setClipboard(text); // Set clipboard content
|
||||
await computer.interface.copyToClipboard(); // Get clipboard content
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## File System Operations
|
||||
|
||||
Direct file and directory manipulation:
|
||||
|
||||
```python
|
||||
# File existence checks
|
||||
await computer.interface.file_exists(path) # Check if file exists
|
||||
await computer.interface.directory_exists(path) # Check if directory exists
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# File existence checks
|
||||
await computer.interface.file_exists(path) # Check if file exists
|
||||
await computer.interface.directory_exists(path) # Check if directory exists
|
||||
|
||||
# File content operations
|
||||
await computer.interface.read_text(path, encoding="utf-8") # Read file content
|
||||
await computer.interface.write_text(path, content, encoding="utf-8") # Write file content
|
||||
await computer.interface.read_bytes(path) # Read file content as bytes
|
||||
await computer.interface.write_bytes(path, content) # Write file content as bytes
|
||||
# File content operations
|
||||
await computer.interface.read_text(path, encoding="utf-8") # Read file content
|
||||
await computer.interface.write_text(path, content, encoding="utf-8") # Write file content
|
||||
await computer.interface.read_bytes(path) # Read file content as bytes
|
||||
await computer.interface.write_bytes(path, content) # Write file content as bytes
|
||||
|
||||
# File and directory management
|
||||
await computer.interface.delete_file(path) # Delete file
|
||||
await computer.interface.create_dir(path) # Create directory
|
||||
await computer.interface.delete_dir(path) # Delete directory
|
||||
await computer.interface.list_dir(path) # List directory contents
|
||||
```
|
||||
# File and directory management
|
||||
await computer.interface.delete_file(path) # Delete file
|
||||
await computer.interface.create_dir(path) # Create directory
|
||||
await computer.interface.delete_dir(path) # Delete directory
|
||||
await computer.interface.list_dir(path) # List directory contents
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// File existence checks
|
||||
await computer.interface.fileExists(path); // Check if file exists
|
||||
await computer.interface.directoryExists(path); // Check if directory exists
|
||||
|
||||
// File content operations
|
||||
await computer.interface.readText(path, "utf-8"); // Read file content
|
||||
await computer.interface.writeText(path, content, "utf-8"); // Write file content
|
||||
await computer.interface.readBytes(path); // Read file content as bytes
|
||||
await computer.interface.writeBytes(path, content); // Write file content as bytes
|
||||
|
||||
// File and directory management
|
||||
await computer.interface.deleteFile(path); // Delete file
|
||||
await computer.interface.createDir(path); // Create directory
|
||||
await computer.interface.deleteDir(path); // Delete directory
|
||||
await computer.interface.listDir(path); // List directory contents
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Accessibility
|
||||
|
||||
Access system accessibility information:
|
||||
|
||||
```python
|
||||
# Accessibility
|
||||
await computer.interface.get_accessibility_tree() # Get accessibility tree
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Accessibility
|
||||
await computer.interface.get_accessibility_tree() # Get accessibility tree
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Accessibility
|
||||
await computer.interface.getAccessibilityTree(); // Get accessibility tree
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@@ -11,18 +11,35 @@ C/ua Computers are preconfigured virtual machines running the Computer Server. T
|
||||
|
||||
This is a cloud container running the Computer Server. This is the easiest & safest way to get a c/ua computer, and can be done by going on the trycua.com website.
|
||||
|
||||
```python
|
||||
from computer import Computer
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
from computer import Computer
|
||||
|
||||
computer = Computer(
|
||||
os_type="linux",
|
||||
provider_type="cloud",
|
||||
name="your-container-name",
|
||||
api_key="your-api-key"
|
||||
)
|
||||
computer = Computer(
|
||||
os_type="linux",
|
||||
provider_type="cloud",
|
||||
name="your-container-name",
|
||||
api_key="your-api-key"
|
||||
)
|
||||
|
||||
await computer.run() # Connect to the container
|
||||
```
|
||||
await computer.run() # Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
import { Computer, OSType } from '@trycua/computer';
|
||||
|
||||
const computer = new Computer({
|
||||
osType: OSType.LINUX,
|
||||
name: "your-container-name",
|
||||
apiKey: "your-api-key"
|
||||
});
|
||||
|
||||
await computer.run(); // Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
# c/ua local containers
|
||||
|
||||
@@ -40,15 +57,31 @@ lume run macos-sequoia-cua:latest
|
||||
```
|
||||
|
||||
3. Connect with Computer
|
||||
```python
|
||||
computer = Computer(
|
||||
os_type="macos",
|
||||
provider_type="lume",
|
||||
name="macos-sequoia-cua:latest"
|
||||
)
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
computer = Computer(
|
||||
os_type="macos",
|
||||
provider_type="lume",
|
||||
name="macos-sequoia-cua:latest"
|
||||
)
|
||||
|
||||
await computer.run() # Connect to the container
|
||||
```
|
||||
await computer.run() # Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
import { Computer, OSType } from '@trycua/computer';
|
||||
|
||||
const computer = new Computer({
|
||||
osType: OSType.MACOS,
|
||||
name: "macos-sequoia-cua:latest"
|
||||
});
|
||||
|
||||
await computer.run(); // Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
# Your host desktop
|
||||
|
||||
@@ -60,7 +93,19 @@ python -m computer-server
|
||||
```
|
||||
|
||||
Connect with:
|
||||
```python
|
||||
computer = Computer(use_host_computer_server=True)
|
||||
await computer.run() # Connect to the host desktop
|
||||
```
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
computer = Computer(use_host_computer_server=True)
|
||||
await computer.run() # Connect to the host desktop
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
import { Computer } from '@trycua/computer';
|
||||
|
||||
const computer = new Computer({ useHostComputerServer: true });
|
||||
await computer.run(); // Connect to the host desktop
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@@ -13,111 +13,199 @@ The Computer library provides a Computer class that can be used to control and a
|
||||
### Basic Usage
|
||||
|
||||
Connect to a c/ua cloud container:
|
||||
```python
|
||||
from computer import Computer
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
from computer import Computer
|
||||
|
||||
computer = Computer(
|
||||
os_type="linux",
|
||||
provider_type="cloud",
|
||||
name="your-container-name",
|
||||
api_key="your-api-key"
|
||||
)
|
||||
computer = Computer(
|
||||
os_type="linux",
|
||||
provider_type="cloud",
|
||||
name="your-container-name",
|
||||
api_key="your-api-key"
|
||||
)
|
||||
|
||||
computer = await computer.run() # Connect to a c/ua cloud container
|
||||
```
|
||||
computer = await computer.run() # Connect to a c/ua cloud container
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
import { Computer, OSType } from '@trycua/computer';
|
||||
|
||||
const computer = new Computer({
|
||||
osType: OSType.LINUX,
|
||||
name: "your-container-name",
|
||||
apiKey: "your-api-key"
|
||||
});
|
||||
|
||||
await computer.run(); // Connect to a c/ua cloud container
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Connect to a c/ua local container:
|
||||
```python
|
||||
from computer import Computer
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
from computer import Computer
|
||||
|
||||
computer = Computer(
|
||||
os_type="macos"
|
||||
)
|
||||
computer = Computer(
|
||||
os_type="macos"
|
||||
)
|
||||
|
||||
computer = await computer.run() # Connect to the container
|
||||
```
|
||||
computer = await computer.run() # Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
import { Computer, OSType } from '@trycua/computer';
|
||||
|
||||
const computer = new Computer({
|
||||
osType: OSType.MACOS
|
||||
});
|
||||
|
||||
await computer.run(); // Connect to the container
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Interface Actions
|
||||
|
||||
```python
|
||||
# Shell Actions
|
||||
result = await computer.interface.run_command(cmd) # Run shell command
|
||||
# result.stdout, result.stderr, result.returncode
|
||||
<Tabs items={['Python', 'TypeScript']}>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
# Shell Actions
|
||||
result = await computer.interface.run_command(cmd) # Run shell command
|
||||
# result.stdout, result.stderr, result.returncode
|
||||
|
||||
# Mouse Actions
|
||||
await computer.interface.left_click(x, y) # Left click at coordinates
|
||||
await computer.interface.right_click(x, y) # Right click at coordinates
|
||||
await computer.interface.double_click(x, y) # Double click at coordinates
|
||||
await computer.interface.move_cursor(x, y) # Move cursor to coordinates
|
||||
await computer.interface.drag_to(x, y, duration) # Drag to coordinates
|
||||
await computer.interface.get_cursor_position() # Get current cursor position
|
||||
await computer.interface.mouse_down(x, y, button="left") # Press and hold a mouse button
|
||||
await computer.interface.mouse_up(x, y, button="left") # Release a mouse button
|
||||
# Mouse Actions
|
||||
await computer.interface.left_click(x, y) # Left click at coordinates
|
||||
await computer.interface.right_click(x, y) # Right click at coordinates
|
||||
await computer.interface.double_click(x, y) # Double click at coordinates
|
||||
await computer.interface.move_cursor(x, y) # Move cursor to coordinates
|
||||
await computer.interface.drag_to(x, y, duration) # Drag to coordinates
|
||||
await computer.interface.get_cursor_position() # Get current cursor position
|
||||
await computer.interface.mouse_down(x, y, button="left") # Press and hold a mouse button
|
||||
await computer.interface.mouse_up(x, y, button="left") # Release a mouse button
|
||||
|
||||
# Keyboard Actions
|
||||
await computer.interface.type_text("Hello") # Type text
|
||||
await computer.interface.press_key("enter") # Press a single key
|
||||
await computer.interface.hotkey("command", "c") # Press key combination
|
||||
await computer.interface.key_down("command") # Press and hold a key
|
||||
await computer.interface.key_up("command") # Release a key
|
||||
# Keyboard Actions
|
||||
await computer.interface.type_text("Hello") # Type text
|
||||
await computer.interface.press_key("enter") # Press a single key
|
||||
await computer.interface.hotkey("command", "c") # Press key combination
|
||||
await computer.interface.key_down("command") # Press and hold a key
|
||||
await computer.interface.key_up("command") # Release a key
|
||||
|
||||
# Scrolling Actions
|
||||
await computer.interface.scroll(x, y) # Scroll the mouse wheel
|
||||
await computer.interface.scroll_down(clicks) # Scroll down
|
||||
await computer.interface.scroll_up(clicks) # Scroll up
|
||||
# Scrolling Actions
|
||||
await computer.interface.scroll(x, y) # Scroll the mouse wheel
|
||||
await computer.interface.scroll_down(clicks) # Scroll down
|
||||
await computer.interface.scroll_up(clicks) # Scroll up
|
||||
|
||||
# Screen Actions
|
||||
await computer.interface.screenshot() # Take a screenshot
|
||||
await computer.interface.get_screen_size() # Get screen dimensions
|
||||
# Screen Actions
|
||||
await computer.interface.screenshot() # Take a screenshot
|
||||
await computer.interface.get_screen_size() # Get screen dimensions
|
||||
|
||||
# Clipboard Actions
|
||||
await computer.interface.set_clipboard(text) # Set clipboard content
|
||||
await computer.interface.copy_to_clipboard() # Get clipboard content
|
||||
# Clipboard Actions
|
||||
await computer.interface.set_clipboard(text) # Set clipboard content
|
||||
await computer.interface.copy_to_clipboard() # Get clipboard content
|
||||
|
||||
# File System Operations
|
||||
await computer.interface.file_exists(path) # Check if file exists
|
||||
await computer.interface.directory_exists(path) # Check if directory exists
|
||||
await computer.interface.read_text(path, encoding="utf-8") # Read file content
|
||||
await computer.interface.write_text(path, content, encoding="utf-8") # Write file content
|
||||
await computer.interface.read_bytes(path) # Read file content as bytes
|
||||
await computer.interface.write_bytes(path, content) # Write file content as bytes
|
||||
await computer.interface.delete_file(path) # Delete file
|
||||
await computer.interface.create_dir(path) # Create directory
|
||||
await computer.interface.delete_dir(path) # Delete directory
|
||||
await computer.interface.list_dir(path) # List directory contents
|
||||
# File System Operations
|
||||
await computer.interface.file_exists(path) # Check if file exists
|
||||
await computer.interface.directory_exists(path) # Check if directory exists
|
||||
await computer.interface.read_text(path, encoding="utf-8") # Read file content
|
||||
await computer.interface.write_text(path, content, encoding="utf-8") # Write file content
|
||||
await computer.interface.read_bytes(path) # Read file content as bytes
|
||||
await computer.interface.write_bytes(path, content) # Write file content as bytes
|
||||
await computer.interface.delete_file(path) # Delete file
|
||||
await computer.interface.create_dir(path) # Create directory
|
||||
await computer.interface.delete_dir(path) # Delete directory
|
||||
await computer.interface.list_dir(path) # List directory contents
|
||||
|
||||
# Accessibility
|
||||
await computer.interface.get_accessibility_tree() # Get accessibility tree
|
||||
# Accessibility
|
||||
await computer.interface.get_accessibility_tree() # Get accessibility tree
|
||||
|
||||
# Delay Configuration
|
||||
# Set default delay between all actions (in seconds)
|
||||
computer.interface.delay = 0.5 # 500ms delay between actions
|
||||
# Delay Configuration
|
||||
# Set default delay between all actions (in seconds)
|
||||
computer.interface.delay = 0.5 # 500ms delay between actions
|
||||
|
||||
# Or specify delay for individual actions
|
||||
await computer.interface.left_click(x, y, delay=1.0) # 1 second delay after click
|
||||
await computer.interface.type_text("Hello", delay=0.2) # 200ms delay after typing
|
||||
await computer.interface.press_key("enter", delay=0.5) # 500ms delay after key press
|
||||
# Or specify delay for individual actions
|
||||
await computer.interface.left_click(x, y, delay=1.0) # 1 second delay after click
|
||||
await computer.interface.type_text("Hello", delay=0.2) # 200ms delay after typing
|
||||
await computer.interface.press_key("enter", delay=0.5) # 500ms delay after key press
|
||||
|
||||
# Python Virtual Environment Operations
|
||||
await computer.venv_install("demo_venv", ["requests", "macos-pyxa"]) # Install packages in a virtual environment
|
||||
await computer.venv_cmd("demo_venv", "python -c 'import requests; print(requests.get(`https://httpbin.org/ip`).json())'") # Run a shell command in a virtual environment
|
||||
await computer.venv_exec("demo_venv", python_function_or_code, *args, **kwargs) # Run a Python function in a virtual environment and return the result / raise an exception
|
||||
# Python Virtual Environment Operations
|
||||
await computer.venv_install("demo_venv", ["requests", "macos-pyxa"]) # Install packages in a virtual environment
|
||||
await computer.venv_cmd("demo_venv", "python -c 'import requests; print(requests.get(`https://httpbin.org/ip`).json())'') # Run a shell command in a virtual environment
|
||||
await computer.venv_exec("demo_venv", python_function_or_code, *args, **kwargs) # Run a Python function in a virtual environment and return the result / raise an exception
|
||||
|
||||
# Example: Use sandboxed functions to execute code in a Cua Container
|
||||
from computer.helpers import sandboxed
|
||||
# Example: Use sandboxed functions to execute code in a Cua Container
|
||||
from computer.helpers import sandboxed
|
||||
|
||||
@sandboxed("demo_venv")
|
||||
def greet_and_print(name):
|
||||
"""Get the HTML of the current Safari tab"""
|
||||
import PyXA
|
||||
safari = PyXA.Application("Safari")
|
||||
html = safari.current_document.source()
|
||||
print(f"Hello from inside the container, {name}!")
|
||||
return {"greeted": name, "safari_html": html}
|
||||
@sandboxed("demo_venv")
|
||||
def greet_and_print(name):
|
||||
"""Get the HTML of the current Safari tab"""
|
||||
import PyXA
|
||||
safari = PyXA.Application("Safari")
|
||||
html = safari.current_document.source()
|
||||
print(f"Hello from inside the container, {name}!")
|
||||
return {"greeted": name, "safari_html": html}
|
||||
|
||||
# When a @sandboxed function is called, it will execute in the container
|
||||
result = await greet_and_print("Cua")
|
||||
# Result: {"greeted": "Cua", "safari_html": "<html>...</html>"}
|
||||
# stdout and stderr are also captured and printed / raised
|
||||
print("Result from sandboxed function:", result)
|
||||
```
|
||||
# When a @sandboxed function is called, it will execute in the container
|
||||
result = await greet_and_print("Cua")
|
||||
# Result: {"greeted": "Cua", "safari_html": "<html>...</html>"}
|
||||
# stdout and stderr are also captured and printed / raised
|
||||
print("Result from sandboxed function:", result)
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
// Shell Actions
|
||||
const result = await computer.interface.runCommand(cmd); // Run shell command
|
||||
// result.stdout, result.stderr, result.returncode
|
||||
|
||||
// Mouse Actions
|
||||
await computer.interface.leftClick(x, y); // Left click at coordinates
|
||||
await computer.interface.rightClick(x, y); // Right click at coordinates
|
||||
await computer.interface.doubleClick(x, y); // Double click at coordinates
|
||||
await computer.interface.moveCursor(x, y); // Move cursor to coordinates
|
||||
await computer.interface.dragTo(x, y, duration); // Drag to coordinates
|
||||
await computer.interface.getCursorPosition(); // Get current cursor position
|
||||
await computer.interface.mouseDown(x, y, "left"); // Press and hold a mouse button
|
||||
await computer.interface.mouseUp(x, y, "left"); // Release a mouse button
|
||||
|
||||
// Keyboard Actions
|
||||
await computer.interface.typeText("Hello"); // Type text
|
||||
await computer.interface.pressKey("enter"); // Press a single key
|
||||
await computer.interface.hotkey("command", "c"); // Press key combination
|
||||
await computer.interface.keyDown("command"); // Press and hold a key
|
||||
await computer.interface.keyUp("command"); // Release a key
|
||||
|
||||
// Scrolling Actions
|
||||
await computer.interface.scroll(x, y); // Scroll the mouse wheel
|
||||
await computer.interface.scrollDown(clicks); // Scroll down
|
||||
await computer.interface.scrollUp(clicks); // Scroll up
|
||||
|
||||
// Screen Actions
|
||||
await computer.interface.screenshot(); // Take a screenshot
|
||||
await computer.interface.getScreenSize(); // Get screen dimensions
|
||||
|
||||
// Clipboard Actions
|
||||
await computer.interface.setClipboard(text); // Set clipboard content
|
||||
await computer.interface.copyToClipboard(); // Get clipboard content
|
||||
|
||||
// File System Operations
|
||||
await computer.interface.fileExists(path); // Check if file exists
|
||||
await computer.interface.directoryExists(path); // Check if directory exists
|
||||
await computer.interface.readText(path, "utf-8"); // Read file content
|
||||
await computer.interface.writeText(path, content, "utf-8"); // Write file content
|
||||
await computer.interface.readBytes(path); // Read file content as bytes
|
||||
await computer.interface.writeBytes(path, content); // Write file content as bytes
|
||||
await computer.interface.deleteFile(path); // Delete file
|
||||
await computer.interface.createDir(path); // Create directory
|
||||
await computer.interface.deleteDir(path); // Delete directory
|
||||
await computer.interface.listDir(path); // List directory contents
|
||||
|
||||
// Accessibility
|
||||
await computer.interface.getAccessibilityTree(); // Get accessibility tree
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import defaultMdxComponents from 'fumadocs-ui/mdx';
|
||||
import * as TabsComponents from 'fumadocs-ui/components/tabs';
|
||||
import type { MDXComponents } from 'mdx/types';
|
||||
import { Mermaid } from './components/mermaid';
|
||||
import IOU from './components/iou';
|
||||
@@ -9,6 +10,7 @@ export function getMDXComponents(components?: MDXComponents): MDXComponents {
|
||||
...defaultMdxComponents,
|
||||
Mermaid,
|
||||
IOU,
|
||||
...TabsComponents,
|
||||
...components,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user