feat: find-window, run, clipboard, label-routing, persistent session-id, exe icon
This commit is contained in:
parent
ef4ca0ccbb
commit
672676d3d7
9 changed files with 214 additions and 15 deletions
45
README.md
45
README.md
|
|
@ -70,6 +70,16 @@ All endpoints require the `X-Api-Key` header.
|
|||
| `POST` | `/sessions/:id/click` | Simulate a mouse click |
|
||||
| `POST` | `/sessions/:id/type` | Type text |
|
||||
| `POST` | `/sessions/:id/label` | Rename a session |
|
||||
| `GET` | `/sessions/:id/windows` | List all windows |
|
||||
| `POST` | `/sessions/:id/windows/minimize-all` | Minimize all windows |
|
||||
| `POST` | `/sessions/:id/windows/:window_id/focus` | Focus a window |
|
||||
| `POST` | `/sessions/:id/windows/:window_id/maximize` | Maximize and focus a window |
|
||||
| `POST` | `/sessions/:id/run` | Launch a program (fire-and-forget) |
|
||||
| `GET` | `/sessions/:id/clipboard` | Get clipboard contents |
|
||||
| `POST` | `/sessions/:id/clipboard` | Set clipboard contents |
|
||||
| `GET` | `/sessions/:id/version` | Get client version |
|
||||
| `POST` | `/sessions/:id/upload` | Upload a file to the client |
|
||||
| `GET` | `/sessions/:id/download?path=...` | Download a file from the client |
|
||||
|
||||
### WebSocket
|
||||
|
||||
|
|
@ -112,6 +122,41 @@ curl -s -X POST -H "X-Api-Key: your-secret-key" \
|
|||
http://localhost:3000/sessions/<session-id>/click
|
||||
```
|
||||
|
||||
## remote.py CLI
|
||||
|
||||
The `skills/helios-remote/remote.py` script provides a simple CLI wrapper around the REST API.
|
||||
|
||||
### Label Routing
|
||||
|
||||
All commands accept either a UUID or a label name as `session_id`. If the value is not a UUID, the script resolves it by looking up the label across all connected sessions:
|
||||
|
||||
```bash
|
||||
python remote.py screenshot "Moritz PC" # resolves label → UUID automatically
|
||||
python remote.py exec "Moritz PC" whoami
|
||||
```
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
python remote.py sessions # list sessions
|
||||
python remote.py screenshot <session> # capture screenshot → /tmp/helios-remote-screenshot.png
|
||||
python remote.py exec <session> <command...> # run shell command
|
||||
python remote.py click <session> <x> <y> # mouse click
|
||||
python remote.py type <session> <text> # keyboard input
|
||||
python remote.py windows <session> # list windows
|
||||
python remote.py find-window <session> <title> # filter windows by title substring
|
||||
python remote.py minimize-all <session> # minimize all windows
|
||||
python remote.py focus <session> <window_id> # focus window
|
||||
python remote.py maximize <session> <window_id> # maximize and focus window
|
||||
python remote.py run <session> <program> [args...] # launch program (fire-and-forget)
|
||||
python remote.py clipboard-get <session> # get clipboard text
|
||||
python remote.py clipboard-set <session> <text> # set clipboard text
|
||||
python remote.py upload <session> <local> <remote> # upload file
|
||||
python remote.py download <session> <remote> <local> # download file
|
||||
python remote.py version <session> # client version
|
||||
python remote.py server-version # server version
|
||||
```
|
||||
|
||||
## Client (Phase 2)
|
||||
|
||||
See [`crates/client/README.md`](crates/client/README.md) for the planned Windows client implementation.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue