@desklink/axi 0.5.3 → 0.5.4
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 +7 -7
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -22,13 +22,13 @@ npm install -g @desklink/axi
|
|
|
22
22
|
|
|
23
23
|
Or build from the repository root with `npm install && npm run build`.
|
|
24
24
|
Delete copied `*.tsbuildinfo` before rebuilding a moved worktree.
|
|
25
|
-
The engine is resolved by `@desklink/host`; see its [installation guide](
|
|
26
|
-
for supported platforms and [macOS setup](
|
|
25
|
+
The engine is resolved by `@desklink/host`; see its [installation guide](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/README.md#install-and-run)
|
|
26
|
+
for supported platforms and [macOS setup](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/README.md#macos-preview).
|
|
27
27
|
Set `DESKLINK_AXI_ENGINE` for a matching source build. An override pointing new AXI at a 0.3.x engine is unsupported; host and engine versions must match.
|
|
28
28
|
|
|
29
29
|
A Linux desktop AXI with macOS in preview. It runs a private bridge per session, captures read-only frames through `@desklink/host` protocol v3, and sends input only through a WebRTC `control` channel. The bridge's Unix socket lives in `$XDG_RUNTIME_DIR/desklink-axi` (or the OS temp directory), with `DESKLINK_AXI_SESSION` selecting an isolated socket. It opens a separate engine session; don't drive the desktop while someone else is controlling it.
|
|
30
30
|
|
|
31
|
-
For macOS source prerequisites, signing and permission attribution, follow the [host setup guide](
|
|
31
|
+
For macOS source prerequisites, signing and permission attribution, follow the [host setup guide](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/README.md#macos-preview). To launch AXI through its signed local harness, use `open -n /absolute/DesklinkHost.app --args axi-bridge /absolute/path/to/packages/axi/bin/desklink-axi.js` from the logged-in Mac session. OCR needs the optional `tesseract` executable (`brew install tesseract`, `sudo pacman -S tesseract` or `sudo apt install tesseract-ocr`); on macOS AXI also finds Homebrew's standard install paths when LaunchServices omits them from PATH. `look` works without it.
|
|
32
32
|
|
|
33
33
|
```
|
|
34
34
|
desklink-axi start --source x11 --display :97
|
|
@@ -45,10 +45,10 @@ desklink-axi look @r1
|
|
|
45
45
|
desklink-axi stop
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
`start --cursor hidden` opts into cursor-free capture; omit it for existing behavior. Use `desklink-axi cursor` to drain source-coordinate cursor samples (`x`, `y`, `visible`, `timestamp_us`, plus `hotspot` where the compositor reports it) from the live session; `dropped:N` reports older samples overwritten after its 10,000-sample buffer fills. On Wayland a hidden session still runs when positions are unavailable and says why in `cursor.limitation`; see the [cursor protocol](
|
|
48
|
+
`start --cursor hidden` opts into cursor-free capture; omit it for existing behavior. Use `desklink-axi cursor` to drain source-coordinate cursor samples (`x`, `y`, `visible`, `timestamp_us`, plus `hotspot` where the compositor reports it) from the live session; `dropped:N` reports older samples overwritten after its 10,000-sample buffer fills. On Wayland a hidden session still runs when positions are unavailable and says why in `cursor.limitation`; see the [cursor protocol](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/docs/PROTOCOL.md#cursor-free-capture).
|
|
49
49
|
|
|
50
|
-
`health` reports capture state, latest frame sequence, and a stream-stop reason without OCR. `start` grants all available access to its same-user paired consumer; Linux uses the portal unless `--source x11 --display :N` is given, and macOS uses the main display unless `--source display --display <id>` is given. The portal can require a desktop consent prompt; its single-use restore token is kept in `$XDG_STATE_HOME/desklink-axi/<session>.portal-token` (otherwise `~/.local/state/desklink-axi/<session>.portal-token`), atomically replaced with mode 0600 after each grant; `<session>` is `DESKLINK_AXI_SESSION`, the same name the session's socket and browser state use, so two lanes never hand each other's grant to their own consumer. Set `DESKLINK_AXI_RESTORE_TOKEN_FILE` to use a different path. macOS Screen Recording and Accessibility belong to the app that launches the bridge and its engine child. Do not run it unattended against someone else's display. Input and clipboard need no app grants; unavailable OS backends fail per action. Legacy `start --control` is accepted and ignored. See the [clipboard protocol](
|
|
51
|
-
To guide the person without input, use `desklink-axi point 400,300 --label "Here" --timeout 3000`, or `desklink-axi point --clear`. See the [host protocol reference](
|
|
50
|
+
`health` reports capture state, latest frame sequence, and a stream-stop reason without OCR. `start` grants all available access to its same-user paired consumer; Linux uses the portal unless `--source x11 --display :N` is given, and macOS uses the main display unless `--source display --display <id>` is given. The portal can require a desktop consent prompt; its single-use restore token is kept in `$XDG_STATE_HOME/desklink-axi/<session>.portal-token` (otherwise `~/.local/state/desklink-axi/<session>.portal-token`), atomically replaced with mode 0600 after each grant; `<session>` is `DESKLINK_AXI_SESSION`, the same name the session's socket and browser state use, so two lanes never hand each other's grant to their own consumer. Set `DESKLINK_AXI_RESTORE_TOKEN_FILE` to use a different path. macOS Screen Recording and Accessibility belong to the app that launches the bridge and its engine child. Do not run it unattended against someone else's display. Input and clipboard need no app grants; unavailable OS backends fail per action. Legacy `start --control` is accepted and ignored. See the [clipboard protocol](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/docs/PROTOCOL.md#clipboard-over-the-local-protocol) for X11 targets, transfer limits and selection lifetime. `stop` releases held input. Actions acknowledge `input: applied` immediately, without waiting for a frame. Every action (`click`, `type`, `press`, `scroll`, `drag`) accepts `--wait settle|change|none|<milliseconds>`; frame timeout after applied input returns `input: applied; frame: timed out` with success status. `batch` takes a JSON array of 1–30 `[verb, ...args]` steps (click/type/press/scroll/wait/snapshot/assert/tree/marks), runs them in order in one socket round trip, stops on the first failed step and returns a compact per-step result. OCR refs survive advancing frame numbers only while their text and position still match a fresh crop; moved or ambiguous text requires `screen --query`. `screen --query` reuses a prior matching text location for a targeted crop before falling back to full OCR, and reports estimated text tokens. Start with `screen --query` or `--region` before `--full`. For web pages prefer DOM/browser automation when available; AXI is for native apps or whole-desktop tasks. `wait change` and `wait settle` block on engine frame signals rather than polling. `diff` reports repeatedly changing regions separately as `animating`; `diff --include-animating` includes them among ordinary changes. `look` writes a PNG crop. `--help` lists the commands and their flags. Errors are structured and the CLI does not prompt.
|
|
51
|
+
To guide the person without input, use `desklink-axi point 400,300 --label "Here" --timeout 3000`, or `desklink-axi point --clear`. See the [host protocol reference](https://github.com/umeranjum17/desklink/blob/main/packages/desktop-host/docs/PROTOCOL.md#point-on-the-host-desktop) for supported sources, coordinates, and limits.
|
|
52
52
|
|
|
53
53
|
## Browser lane (opt-in, loopback-only)
|
|
54
54
|
|
|
@@ -78,7 +78,7 @@ before signalling them. Browsers attached through `--cdp` remain caller-owned.
|
|
|
78
78
|
## Proofs and measurements
|
|
79
79
|
|
|
80
80
|
From the repository root with a task-built engine (`DESKLINK_AXI_ENGINE`) on
|
|
81
|
-
Linux, following the [private-lab guidance](
|
|
81
|
+
Linux, following the [private-lab guidance](https://github.com/umeranjum17/desklink/blob/main/README.md#develop):
|
|
82
82
|
|
|
83
83
|
- `node packages/axi/test/smoke.mjs` — clean-tree rebuild of host+axi, then `batch` and `click` on a private Xvfb; asserts no task-owned survivors.
|
|
84
84
|
- `node packages/axi/test/flow.mjs` — full desktop proof (frame/damage, point coordinates/timeout/clear without pointer or focus changes, click-through, input, chords, batch outcomes, injected-failure cleanup).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@desklink/axi",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "Agent-facing desktop control CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -29,10 +29,15 @@
|
|
|
29
29
|
"typescript": "5.9.3"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@desklink/host": "0.5.
|
|
32
|
+
"@desklink/host": "0.5.4",
|
|
33
33
|
"node-datachannel": "0.33.4",
|
|
34
34
|
"playwright-core": "1.62.1",
|
|
35
35
|
"pngjs": "7.0.0"
|
|
36
36
|
},
|
|
37
|
-
"license": "Apache-2.0"
|
|
37
|
+
"license": "Apache-2.0",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/umeranjum17/desklink.git",
|
|
41
|
+
"directory": "packages/axi"
|
|
42
|
+
}
|
|
38
43
|
}
|