feat: release 2.2.0 with PC-only tests and execution reliability fixes

Unify task scheduling and queue state, fix Android input and observation recovery, preserve screenshot paths, and match final review criteria accurately. Add collapsible copyable results and publish the complete 2.1.0 upgrade notes. Validation: 3189 backend tests, 326 frontend tests, 24 client tests, production build and quality gates.
This commit is contained in:
chenmingxuan committed 2026-10-27 01:13:41 +08:00
1 parent fac4ccb760
commit be6e8c2abd
79 files changed
+2263 -277

No files matched your search

+23
View File
@@ -7,6 +7,9 @@ ADB, device-driver, agent, LLM, or image-processing code.
Runtime dependencies: **zero**. HTTP, JSON, and asynchronous adapters use only
the Python standard library.
Artemis 2.2.0 queues computer and Android tasks for serial execution. Legacy
concurrency options cannot enable parallel execution on that server version.
## Installation
Install from a local checkout:
@@ -44,6 +47,26 @@ and bearer-token authentication and exposes only task-related APIs.
## Usage
PC-only tasks do not need Android or an emulator online. Enable and authorize a
computer observation plugin on the host first, then use the same target as the
web launcher's “仅 PC” checkbox:
```python
handle = await client.submit(
"Open the desktop browser and inspect the requested page",
profile="flash", # "pro" is also supported
execution_target="computer",
)
```
`run()` accepts the same argument. For task-like objects, use
`Task(goal="Check desktop", execution_target="computer")` from the full runtime
and pass it to `client.run_task()`. A saved Android device on the client is ignored
for PC-only tasks. Per-task `options` are sent as the server's `runtime_overrides`,
for example `options={"execution_target":"computer","plugins":[{"id":"cua-driver","profile":"default"}]}`.
Plugin IDs must exist on the host; omitting `plugins` selects enabled authorized
defaults for the target. Mixed tasks still require Android.
For interactive case design, use `client.exploration` with the same actions as the
web workspace and `mobile_exploration`. Use a stable request ID when retrying a write: