@swmansion/argent 0.24.1-next.14 → 0.24.1-next.16
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 +16 -191
- package/dist/cli-cmds.mjs +1 -1
- package/dist/installer.mjs +1 -1
- package/dist/tool-server.cjs +6 -80
- package/package.json +1 -1
- package/skills/argent-create-flow/references/flow-yaml.md +1 -1
package/README.md
CHANGED
|
@@ -1,215 +1,40 @@
|
|
|
1
1
|
<br/>
|
|
2
|
-
<p align="center">
|
|
3
|
-
<a href="https://argent.swmansion.com">
|
|
4
|
-
<img width="1100" height="382" alt="argent-header" src="https://github.com/user-attachments/assets/6cec01d5-da3c-4b6c-97c3-0374a63c213c" />
|
|
5
|
-
</a>
|
|
6
|
-
</p>
|
|
2
|
+
<p align="center"><a href="https://argent.swmansion.com"><img width="1100" height="382" alt="argent-header" src="https://github.com/user-attachments/assets/6cec01d5-da3c-4b6c-97c3-0374a63c213c" /></a></p>
|
|
7
3
|
|
|
8
4
|
[](https://swm-delivery.com/www/delivery/ck-slug.php?zoneid=zone-gh-argent-1&n=1)
|
|
9
5
|
[](https://swm-delivery.com/www/delivery/ck-slug.php?zoneid=zone-gh-argent-2&n=1)
|
|
10
6
|
[](https://swm-delivery.com/www/delivery/ck-slug.php?zoneid=zone-gh-argent-3&n=1)
|
|
11
7
|
|
|
12
|
-
**[Argent](https://argent.swmansion.com)**
|
|
8
|
+
**[Argent](https://argent.swmansion.com)** gives your AI assistant direct control of iOS simulators, Android emulators and devices, TVs (Apple TV, Android TV, Fire TV) and Electron/Chromium apps. Tap a button, profile a screen, reproduce a bug - without leaving the CLI.
|
|
13
9
|
|
|
14
10
|
```bash
|
|
15
|
-
npx @swmansion/argent@latest init
|
|
16
|
-
# or, in a pnpm project (where npm's devEngines check may refuse to run npx):
|
|
17
|
-
pnpm dlx @swmansion/argent@latest init
|
|
11
|
+
npx @swmansion/argent@latest init # pnpm: pnpm dlx @swmansion/argent@latest init
|
|
18
12
|
```
|
|
19
13
|
|
|
20
|
-
|
|
14
|
+
<p align="center"><img src="https://github.com/software-mansion/argent/blob/main/assets/showcase.gif" alt="argent showcase video gif" width="100%" /></p>
|
|
21
15
|
|
|
22
|
-
|
|
16
|
+
## What it does
|
|
23
17
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
- **Interact** - tap, swipe, gesture, type, hardware buttons; D-pad on TV; mouse and keyboard on desktop.
|
|
19
|
+
- **Flows** - record a path once, replay it deterministically as a repro or smoke test.
|
|
20
|
+
- **Visual regression** - diff a baseline against a live capture, OCR- and font-aware.
|
|
21
|
+
- **Profiling** - Hermes, React DevTools, Xcode Instruments, Perfetto: renders, CPU hotspots, hangs.
|
|
22
|
+
- **Debugging** - logs, network (`fetch` and native), JS evaluation, native and React trees.
|
|
23
|
+
- **React Native** - build, launch and iterate, no extra setup.
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
Ask your assistant _"What can Argent do?"_ to list every tool.
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
- **UI interaction** - Give your agent the full control toolkit - tapping, swiping, pinching, typing, gestures and hardware buttons on mobile; the directional remote on TV; mouse, scroll and drag on desktop/web. Let it navigate your app exactly as a user would, without lifting a finger.
|
|
35
|
-
- **Record & replay flows** - Capture a sequence of interactions once and let your agent replay it deterministically, so manual repros and smoke tests become repeatable.
|
|
36
|
-
- **Visual regression** - Diff two screenshots (or a saved baseline against a live capture) with OCR- and font-aware comparison to catch unintended UI changes.
|
|
37
|
-
- **Profiling with batteries included** - Argent can perform and analyze React Native (Hermes), React DevTools and native (Xcode Instruments / Android Perfetto) profiling sessions - down to fiber renders, CPU hotspots and cross-correlated commit-vs-hang reports. Get comprehensive summaries and ask to optimise your app where you find fit.
|
|
38
|
-
- **Debugging and diagnostics** - Let your agent inspect logs, capture network traffic (JS `fetch` and native), evaluate JS in the running app, walk the native UIKit and React component trees, and reproduce failing states - so you can jump straight to the fix.
|
|
39
|
-
- **Desktop & web control** - For Electron and Chromium apps your agent can drive tabs, read and write cookies and storage, walk the DOM and inspect network over the Chrome DevTools Protocol.
|
|
40
|
-
- **React Native out of the box** - Argent works with React Native apps natively, so your agent can build, launch, and iterate on your RN project the same way it would any native app - no extra setup required.
|
|
27
|
+
## Documentation
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<br/>
|
|
45
|
-
<p align="center">
|
|
46
|
-
<img src="https://github.com/software-mansion/argent/blob/main/assets/showcase.gif" alt="argent showcase video gif" width="100%" />
|
|
47
|
-
</p>
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Installation
|
|
52
|
-
|
|
53
|
-
#### Prerequisites
|
|
54
|
-
|
|
55
|
-
- **Node.js 20.12** or later
|
|
56
|
-
- For iOS / tvOS: macOS with **Xcode** installed (Apple TV uses tvOS simulators — Xcode downloads the tvOS runtime on demand)
|
|
57
|
-
- For Android / Android TV: **Android SDK Platform Tools** (`adb`) on `PATH`, and the **Android Emulator** package if you want to boot AVDs from Argent. Create AVDs via Android Studio or `avdmanager`.
|
|
58
|
-
- For Fire TV (Vega): the **Vega SDK** (`vega` CLI) on `PATH`
|
|
59
|
-
- For Electron / Chromium: nothing extra to control an already-running app - just launch it with `--remote-debugging-port`, or let Argent spawn your Electron app for you
|
|
60
|
-
|
|
61
|
-
##### Linux host: extra prerequisites for Android emulators
|
|
62
|
-
|
|
63
|
-
Argent runs Android emulators on Linux but the default install can be slow if a few host-side knobs aren't right. Cover these once and the experience matches macOS:
|
|
64
|
-
|
|
65
|
-
- **KVM access.** The emulator falls back to slow software emulation (TCG) without `/dev/kvm`. Make sure virtualization is enabled in BIOS/UEFI (`vmx` for Intel, `svm` for AMD in `/proc/cpuinfo`) and that your user can read/write `/dev/kvm` — on most distros that means joining the `kvm` group:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
sudo usermod -aG kvm "$USER"
|
|
69
|
-
# log out and back in so the new group takes effect
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
- **GPU mode (`-gpu swiftshader` on Linux, override available).** The Android emulator's Linux GPU story is messy: `-gpu auto` frequently resolves to lavapipe (slow software Vulkan via host libvulkan, ~10× cold-boot regression on flagship hardware), and `-gpu host` silently produces a corrupted or black emulator window on hosts with non-trivial GL stacks — dual-GPU / Optimus laptops, NVIDIA + Mesa coexistence via libglvnd, Wayland sessions on hybrid graphics, headless / containerized hosts. The failure mode is invisible to argent's framebuffer-based screenshot tool, so an agent reports success while the developer sees a black window.
|
|
73
|
-
|
|
74
|
-
Argent picks `-gpu swiftshader` on Linux for universal compatibility: it sidesteps the host GL stack entirely and renders via the emulator's bundled SwiftShader. On modern multi-core machines this is indistinguishably smooth from hardware-accelerated `-gpu host` (and far faster than lavapipe).
|
|
75
|
-
|
|
76
|
-
Override with the `ARGENT_EMULATOR_GPU_MODE` env var if you've verified `-gpu host` works on your machine (typical single-GPU Mesa box with a healthy X session):
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
ARGENT_EMULATOR_GPU_MODE=host argent ...
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Argent's boot-device preflight prints a warning if `/dev/kvm` isn't usable — the condition that causes a 10–50× TCG-vs-KVM slowdown.
|
|
83
|
-
|
|
84
|
-
- **System image.** Prefer the `default` or `google_apis` variants of `x86_64` system images for headless agent workflows; `google_apis_playstore` adds noticeable boot-time CPU churn from Play services. Always pick `x86_64` on Intel/AMD hosts — ARM images run via QEMU translation and are dramatically slower.
|
|
85
|
-
|
|
86
|
-
- **AVD config.** AVDs created via `avdmanager create avd` default to `hw.gpu.enabled=no`. Argent overrides this with an explicit `-gpu` arg at launch (so the on-disk config doesn't need editing). For the smoothest experience under heavy native builds (gradle compilations alongside the AVD), bump the AVD's RAM and CPU count — edit `~/.android/avd/<name>.avd/config.ini`:
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
hw.ramSize = 8192
|
|
90
|
-
hw.cpu.ncore = 6
|
|
91
|
-
vm.heapSize = 512
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Stock 2 GB / 4 vCPU AVDs can be CPU-starved into wedged-system_server states by a concurrent gradle/Kotlin compile.
|
|
95
|
-
|
|
96
|
-
- **Headless / CI mode (`ARGENT_EMULATOR_NO_WINDOW=1`).** Argent shows the emulator window by default so a local developer can see the AVD UI. In a headless context — CI runner, container, or a Wayland-only session where the emulator's bundled Qt has no `wayland` platform plugin and SIGABRTs on the crash-consent dialog — opt out by exporting `ARGENT_EMULATOR_NO_WINDOW=1` before starting the tool-server. This appends `-no-window` to the spawn args, selecting `qemu-system-x86_64-headless` which doesn't need a Qt window. Argent's screencap-based screenshot tool reads the in-memory framebuffer correctly without a visible window.
|
|
97
|
-
|
|
98
|
-
#### Run `init` in your project
|
|
99
|
-
|
|
100
|
-
From your project root:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
npx @swmansion/argent@latest init
|
|
104
|
-
# or, in a pnpm project (where npm's devEngines check may refuse to run npx):
|
|
105
|
-
pnpm dlx @swmansion/argent@latest init
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
This command triggers an installation wizard which:
|
|
109
|
-
|
|
110
|
-
- Installs `@swmansion/argent` globally
|
|
111
|
-
- Detects your editor and registers the MCP server
|
|
112
|
-
- Copies skills, rules, and agent definitions into your workspace
|
|
113
|
-
|
|
114
|
-
#### Prefer a manual install?
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
npm install -g @swmansion/argent
|
|
118
|
-
argent init
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
#### Share Argent with your team (committable install)
|
|
122
|
-
|
|
123
|
-
By default Argent installs **globally**. To version Argent _with your repo_ so every
|
|
124
|
-
teammate gets the same setup on `npm install` — no per-developer global install, no
|
|
125
|
-
`argent init` — choose the local mode:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npx @swmansion/argent@latest init --local
|
|
129
|
-
# or, in a pnpm project:
|
|
130
|
-
pnpm dlx @swmansion/argent@latest init --local
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
> Note: in a freshly `pnpm init`-ed project, `npx` itself may refuse to run
|
|
134
|
-
> (npm's `devEngines` check) — use the `pnpm dlx` form there.
|
|
135
|
-
|
|
136
|
-
This adds `@swmansion/argent` to your project's `devDependencies` and writes MCP
|
|
137
|
-
configs that launch the project-local copy (`node node_modules/@swmansion/argent/dist/cli.js mcp`).
|
|
138
|
-
Commit `package.json` + your lockfile, the generated MCP config (`.mcp.json`,
|
|
139
|
-
`.cursor/mcp.json`, …), `.argent/install.json`, and the skills/rules/agents files.
|
|
140
|
-
Teammates then just run `npm install`.
|
|
141
|
-
|
|
142
|
-
Pass `--global` to force the default mode in scripts; `--local` and `--global` are
|
|
143
|
-
mutually exclusive. A non-interactive (`--yes`) run defaults to global unless the
|
|
144
|
-
project already opted into local mode (a committed `.argent/install.json`, or
|
|
145
|
-
`@swmansion/argent` declared in the project's own `package.json`).
|
|
146
|
-
|
|
147
|
-
> In local mode the committed MCP config runs the project-local copy, so the bare
|
|
148
|
-
> `argent` command is **not** on teammates' `PATH`. Note that `npm install` builds
|
|
149
|
-
> Argent's native deps (`tree-sitter`) on each machine — prebuilt for macOS, Linux
|
|
150
|
-
> x64, and Windows x64; other targets (Linux arm64, Windows arm) compile from source
|
|
151
|
-
> and need a C/C++ toolchain.
|
|
152
|
-
|
|
153
|
-
## CLI Reference
|
|
154
|
-
|
|
155
|
-
| Command | Description |
|
|
156
|
-
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
157
|
-
| `argent init` | Install and configure MCP in the current workspace (`--global` default, `--local` for a committable devDependency) |
|
|
158
|
-
| `argent install` | Alias for `init` command |
|
|
159
|
-
| `argent update` | Pull the latest version and refresh workspace configuration (acts on the present install — both when a global install and a project devDependency coexist; `--global`/`--local` select explicitly) |
|
|
160
|
-
| `argent uninstall` | Unregister the MCP server and uninstall the package (`--global`/`--local` choose which install — and its configs — is removed; non-interactive runs never remove a coexisting global install) |
|
|
161
|
-
| `argent remove` | Alias for `uninstall` command |
|
|
162
|
-
| `argent mcp` | Start MCP server instance, used internally by agent |
|
|
163
|
-
| `argent tools` | List tools exposed by the tool-server (`describe <name>` for details) |
|
|
164
|
-
| `argent run` | Invoke a tool by name |
|
|
165
|
-
| `argent server` | Manage the shared tool-server: `start` / `status` / `stop` / `logs` |
|
|
166
|
-
| `argent lens` | Open Argent Lens bound to a fresh coding-agent session — Claude by default, `--agent` selects codex/gemini/opencode/cursor (macOS; behind the `argent-lens` flag — run `argent enable argent-lens` first) |
|
|
167
|
-
| `argent link` | Route client requests to a remote tool-server |
|
|
168
|
-
| `argent unlink` | Remove the persisted remote tool-server link |
|
|
169
|
-
| `argent enable` | Enable a predefined feature flag (`--scope project` for project-local) |
|
|
170
|
-
| `argent disable` | Disable a feature flag (`--scope project` for project-local) |
|
|
171
|
-
| `argent flags` | List available feature flags and their state |
|
|
172
|
-
| `argent providers` | Inspect and manage external device providers: `list` / `check` / `publish` / `withdraw` / `prune` |
|
|
173
|
-
| `argent telemetry` | Manage telemetry: `status` / `enable` / `disable` |
|
|
174
|
-
|
|
175
|
-
## Supported Editors
|
|
176
|
-
|
|
177
|
-
`argent init` auto-detects and configures MCP for:
|
|
178
|
-
|
|
179
|
-
| Editor | Config location |
|
|
180
|
-
| ----------- | --------------------------------------------------------------------------- |
|
|
181
|
-
| Claude Code | `.mcp.json` (project) or `~/.claude.json` (global) |
|
|
182
|
-
| Cursor | `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global) |
|
|
183
|
-
| VS Code | `.vscode/mcp.json` |
|
|
184
|
-
| Windsurf | `~/.codeium/windsurf/mcp_config.json` (global) |
|
|
185
|
-
| Zed | `.zed/settings.json` (project) or `~/.config/zed/settings.json` (global) |
|
|
186
|
-
| Gemini CLI | `.gemini/settings.json` |
|
|
187
|
-
| Codex CLI | `.codex/config.toml` (project) or `~/.codex/config.toml` (global) |
|
|
188
|
-
| Hermes | `~/.hermes/config.yaml` (global) |
|
|
189
|
-
| opencode | `opencode.json` (project) or `~/.config/opencode/opencode.json` (global) |
|
|
190
|
-
| Kiro | `.kiro/settings/mcp.json` (project) or `~/.kiro/settings/mcp.json` (global) |
|
|
29
|
+
[Installation](https://docs.swmansion.com/argent/docs/fundamentals/installation) · [Platforms](https://docs.swmansion.com/argent/docs/fundamentals/supported-platforms) · [CLI](https://docs.swmansion.com/argent/docs/reference/cli) · [Editors](https://docs.swmansion.com/argent/docs/reference/editors)
|
|
191
30
|
|
|
192
31
|
## Privacy
|
|
193
32
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
You can opt out at any time:
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
argent telemetry disable # check status with: argent telemetry status
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
For the full details — see the [Argent Privacy Notice (Telemetry)](https://github.com/software-mansion/argent/blob/main/Telemetry.md).
|
|
33
|
+
Telemetry is opt-out: `argent telemetry disable`. See the [Privacy Notice](https://github.com/software-mansion/argent/blob/main/Telemetry.md).
|
|
203
34
|
|
|
204
35
|
## License
|
|
205
36
|
|
|
206
|
-
Argent uses a mixed licensing model.
|
|
207
|
-
|
|
208
|
-
**Source code** is released under the [Apache License 2.0](LICENSE.txt).
|
|
209
|
-
|
|
210
|
-
**Proprietary binaries** (the per-platform `bin/<platform>/simulator-server` and `bin/darwin/ax-service` executables and the `.dylib` files in `native-devtools-ios`) are the intellectual property of Software Mansion S.A. and are licensed solely for use within this project. Decompiling, reverse-engineering, or redistributing them without explicit written permission is prohibited.
|
|
211
|
-
|
|
212
|
-
By using Argent, you acknowledge and agree to this structure. See [LICENSE](https://github.com/software-mansion/argent/blob/main/LICENSE.txt) for full details.
|
|
37
|
+
Argent uses a mixed licensing model. **Source code** is released under the [Apache License 2.0](LICENSE.txt). **Proprietary binaries** (the per-platform `bin/<platform>/simulator-server` and `bin/darwin/ax-service` executables and the `.dylib` files in `native-devtools-ios`) are the intellectual property of Software Mansion S.A. and are licensed solely for use within this project. Decompiling, reverse-engineering, or redistributing them without explicit written permission is prohibited. By using Argent, you acknowledge and agree to this structure. See [LICENSE](https://github.com/software-mansion/argent/blob/main/LICENSE.txt) for full details.
|
|
213
38
|
|
|
214
39
|
## Argent is created by Software Mansion
|
|
215
40
|
|
package/dist/cli-cmds.mjs
CHANGED
|
@@ -21857,7 +21857,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
21857
21857
|
var SESSION_ID2 = randomUUID5();
|
|
21858
21858
|
function readCliVersion() {
|
|
21859
21859
|
if (true) {
|
|
21860
|
-
return "0.24.1-next.
|
|
21860
|
+
return "0.24.1-next.16";
|
|
21861
21861
|
}
|
|
21862
21862
|
return "0.0.0";
|
|
21863
21863
|
}
|
package/dist/installer.mjs
CHANGED
|
@@ -16710,7 +16710,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
16710
16710
|
var SESSION_ID = randomUUID4();
|
|
16711
16711
|
function readCliVersion() {
|
|
16712
16712
|
if (true) {
|
|
16713
|
-
return "0.24.1-next.
|
|
16713
|
+
return "0.24.1-next.16";
|
|
16714
16714
|
}
|
|
16715
16715
|
return "0.0.0";
|
|
16716
16716
|
}
|
package/dist/tool-server.cjs
CHANGED
|
@@ -94702,7 +94702,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
|
|
|
94702
94702
|
var SESSION_ID = (0, import_node_crypto3.randomUUID)();
|
|
94703
94703
|
function readCliVersion() {
|
|
94704
94704
|
if (true) {
|
|
94705
|
-
return "0.24.1-next.
|
|
94705
|
+
return "0.24.1-next.16";
|
|
94706
94706
|
}
|
|
94707
94707
|
return "0.0.0";
|
|
94708
94708
|
}
|
|
@@ -154369,85 +154369,11 @@ function createRunFlowTool(registry2) {
|
|
|
154369
154369
|
completedMsg: ({ params }) => `Ran flow ${displayFlowName(params)}`,
|
|
154370
154370
|
failedMsg: ({ params, failureSignal: failureSignal2 }) => `Failed to run flow ${displayFlowName(params)}: ${failureSignal2.error_code}`
|
|
154371
154371
|
},
|
|
154372
|
-
description: `Run a saved flow
|
|
154373
|
-
|
|
154374
|
-
|
|
154375
|
-
|
|
154376
|
-
|
|
154377
|
-
ready (on iOS it also pins later element lookups to that app rather than auto-detecting the frontmost
|
|
154378
|
-
one); \`tool\` calls dispatch through the registry (a raw \`tool\` step ends that iOS pin, so lookups
|
|
154379
|
-
auto-detect again until the next \`launch\`, though a tool that cannot change the foreground app leaves the
|
|
154380
|
-
launched id as a fallback for a timed-out auto-detect, and \`launch-app\`/\`restart-app\` leave the id they
|
|
154381
|
-
started as that fallback instead); \`tap\`/\`long-press\`/\`type\` resolve a selector to an
|
|
154382
|
-
element and act on it (\`tap: { on, times: 2 }\` double-taps; \`long-press: { on, duration }\` presses and
|
|
154383
|
-
holds; \`tap\`/\`long-press\` alternatively take a raw normalized point \u2014 bare \`{ x, y }\` or \`on: { x, y }\`;
|
|
154384
|
-
any selector may scope its matches geometrically, the CSS combinators read off frames: \`within: <selector>\`
|
|
154385
|
-
(descendant \u2014 inside that container's frame), \`after: <selector>\` (CSS \`~\` \u2014 following it in reading
|
|
154386
|
-
order), \`next: <selector>\` (CSS \`+\` \u2014 the nearest such follower, which unlike CSS reaches past a
|
|
154387
|
-
non-matching neighbour rather than failing), plus \`any: true\` (CSS \`*\` \u2014 legal only WITH a scope and
|
|
154388
|
-
never beside text/id/role). Scopes nest to disambiguate \u2014 \`within: { id: card, within: { id: list } }\`
|
|
154389
|
-
reads "inside card inside list", each container's frame inside the next);
|
|
154390
|
-
\`swipe\` performs one finger flick (\`swipe: left\`, or \`swipe: { from?, direction|to|by, momentum?, duration? }\` \u2014
|
|
154391
|
-
direction is the FINGER's travel, the opposite sense of scroll-to's content direction; \`by: { x?, y? }\` \u2014 signed
|
|
154392
|
-
0\u20131 screen fractions, combined length at least 0.03 (a diagonal clears it where neither axis does); duration in ms,
|
|
154393
|
-
default 300, minimum 150, maximum 10000; each bound is a parse error that rejects the file before any step runs;
|
|
154394
|
-
\`momentum: false\` lands exactly where the finger lifts instead of flinging);
|
|
154395
|
-
\`scroll-to\` scrolls (momentum-free) until a target is visible; \`pinch\` zooms
|
|
154396
|
-
(\`pinch: { on?, scale }\` \u2014 scale > 1 in, < 1 out; screen center when \`on\` is omitted); \`rotate\` is the
|
|
154397
|
-
two-finger rotation gesture (\`rotate: { on?, by }\` \u2014 degrees, + clockwise, within \xB13000\xB0; screen center
|
|
154398
|
-
when \`on\` is omitted; distinct from the \`rotate\` tool, which changes device orientation); \`await\` waits
|
|
154399
|
-
for a UI condition, and additionally takes the one condition that has no selector: \`idle: true\` waits
|
|
154400
|
-
until the screen has content and stops moving in BOTH the UI tree and the rendered pixels (it never
|
|
154401
|
-
fails a run \u2014 a screen that never settles passes carrying a \`warning\`, which is what makes it safe to
|
|
154402
|
-
persist; the one idle outcome that does stop the run is an \`error\` for a tree source THIS step could not
|
|
154403
|
-
read at all \u2014 a broken window rather than a verdict about the app, which leaves the run not-ok and skips
|
|
154404
|
-
every later step; it says nothing about WHICH screen settled \u2014 a dropped tap leaves the source screen
|
|
154405
|
-
perfectly idle \u2014 so pair it with the element check that names the destination); \`wait\` pauses for a fixed number of milliseconds; \`assert\` checks one now; \`snapshot\`
|
|
154406
|
-
diffs a screenshot \u2014 or, with \`cropOn: <selector>\`, one element's cropped region \u2014 against a stored
|
|
154407
|
-
baseline (a missing baseline fails the step \u2014 set updateBaselines to adopt the current screen; a
|
|
154408
|
-
cropped element whose size drifted fails on dimensions); \`echo\` annotates; \`run\` executes another flow
|
|
154409
|
-
inline \u2014 a YAML path resolved against the directory of the flow file that references it (co-located
|
|
154410
|
-
runs only); \`script\` runs a local .mjs file in a fresh Node process for setup, cleanup, or any work a device step cannot do
|
|
154411
|
-
(\`script: { path: ../../scripts/seed.mjs, timeout?: <ms> }\` \u2014 always a map, never a bare path; the path
|
|
154412
|
-
is resolved against the flow file that names the step, exactly as a \`run\` target is, so a saved flow
|
|
154413
|
-
climbs out of .argent/flows/ to reach the project's own scripts/ directory. The step needs no device, so
|
|
154414
|
-
a script-only flow runs with nothing booted \u2014 but a \`run\` or a \`when\` step beside it still resolves
|
|
154415
|
-
one, \`when\` even when the only thing it guards is another script, so a platform-gated seed needs a
|
|
154416
|
-
device of that platform. Its stdout and stderr come back on the step report. Co-located runs only.).
|
|
154417
|
-
A selector-less gesture \u2014 a coordinate \`tap\`/\`long-press\`/\`swipe\`, or a \`pinch\`/\`rotate\` with no \`on\` \u2014 resolves
|
|
154418
|
-
no frame out of the tree, so an unreadable tree source does NOT stop it the way it stops \`idle\`: it
|
|
154419
|
-
settles best-effort, dispatches anyway, and the step PASSES carrying a \`warning\` that quotes the source's
|
|
154420
|
-
own error. That green says the gesture was SENT, not that it landed. Restore the tree source (usually
|
|
154421
|
-
relaunch the app so the instrumentation loads), or accept the warning where the app can serve no tree;
|
|
154422
|
-
the first such gesture proves the outage and later ones spend that verdict without paying the settle
|
|
154423
|
-
window again. A tree read that comes back, or a relaunch, retires that verdict \u2014 which only makes the
|
|
154424
|
-
next gesture pay a fresh window, and it warns again if the source is still down.
|
|
154425
|
-
A \`when:\` block (condition + \`steps:\`, no else) runs its steps only if the condition holds \u2014
|
|
154426
|
-
checked once with the short assert grace \u2014 for one-sided divergences like interstitials and coach
|
|
154427
|
-
marks; a skipped block reports distinctly and failures inside an entered block are real failures.
|
|
154428
|
-
A flow is self-contained when its first non-\`echo\`/\`script\` step is \`launch\`; it must not declare
|
|
154429
|
-
\`executionPrerequisite\`. Other flows use the device's current state. Device id is injected by the runner (flows store none) \u2014 pass \`device\` or
|
|
154430
|
-
\`platform\` to pick one, else the single booted device is used. On Chromium a \`launch\` step's value is an
|
|
154431
|
-
Electron app path ({ chromium: <path> | { path, args } }) the runner boots (on the tool-server host) rather
|
|
154432
|
-
than an installed app id it relaunches. With no explicit \`device\`, a run whose leading launch is
|
|
154433
|
-
unambiguously chromium (\`platform: chromium\`, or a lone \`{ chromium: \u2026 }\` target) boots that app and
|
|
154434
|
-
starts there \u2014 following a leading \`run:\`, \`echo:\` or \`script:\`, so a fragment that composes a chromium
|
|
154435
|
-
e2e flow boots too, and so does a flow that seeds a backend before it launches;
|
|
154436
|
-
otherwise the first launch attaches to an already-running instance and never kills it. Every later
|
|
154437
|
-
launch \u2014 a nested e2e flow's own, or a mid-flow relaunch \u2014 boots a fresh instance the run moves onto;
|
|
154438
|
-
an instance the run already owns for that same app is killed first (its exit awaited) so the
|
|
154439
|
-
replacement can't lose the race against its single-instance lock. Instances the runner still owns at
|
|
154440
|
-
run end are torn down then. A launch declaring no id for the run's platform is an error, not a cue to
|
|
154441
|
-
switch platforms. Every step hard-stops the flow on failure; later steps are reported as skipped.
|
|
154442
|
-
Returns a structured report ({ flow, device, executionPrerequisite, ok, aborted?, passed, failed,
|
|
154443
|
-
skipped, errored, steps }) \u2014 \`device\` is the device the run STARTED on; when launches moved it onto
|
|
154444
|
-
runner-booted instances, each names its instance in that step's reason and marks the move \u2014 \`run moved
|
|
154445
|
-
off <id>\`, or \`retired <id> (same app relaunched)\` when the instance it left was the one killed \u2014
|
|
154446
|
-
a relaunch that retired an older owned instance names both.
|
|
154447
|
-
|
|
154448
|
-
If a fragment has an execution prerequisite and prerequisiteAcknowledged is not set to true, the tool
|
|
154449
|
-
returns a notice with the prerequisite instead of running.
|
|
154450
|
-
Pass exactly one flow source: name for a saved flow under project_root, or flow_path for an explicit YAML \u2014 both together, or neither, fails the call.`,
|
|
154372
|
+
description: `Run a saved YAML flow end to end. Use when
|
|
154373
|
+
asked to replay a recorded path, re-run a QA regression, or check that a known journey still passes; for a
|
|
154374
|
+
one-off interaction use the gesture tools instead, and to author a flow use flow-start-recording. Pass
|
|
154375
|
+
exactly one flow source: name (under project_root) or flow_path.
|
|
154376
|
+
Returns a per-step report: the first failure stops the run and the rest report as skipped.`,
|
|
154451
154377
|
longRunning: true,
|
|
154452
154378
|
zodSchema: zodSchema66,
|
|
154453
154379
|
fileInputs: fileInputs3,
|
package/package.json
CHANGED
|
@@ -109,7 +109,7 @@ Scopes can combine and nest, with at most six scope keys. Use strict selectors f
|
|
|
109
109
|
|
|
110
110
|
## Directives
|
|
111
111
|
|
|
112
|
-
Directives stop the flow on failure and skip later steps.
|
|
112
|
+
Directives stop the flow on failure and skip later steps. The available directives are `launch`, `tap`, `long-press`, `swipe`, `type`, `scroll-to`, `pinch`, `rotate`, `await`, `assert`, `wait`, `snapshot`, `run`, `script`, `when`, `echo`, and `tool`.
|
|
113
113
|
|
|
114
114
|
Use the launch map for cross-platform flows. A bare launch applies everywhere and becomes an app path on Chromium. The map takes `native:`, `ios:`, `android:`, `vega:`, and `chromium:`. `native:` is one id shared by iOS, Android, and Vega, and a per-platform key overrides it for that platform. `chromium:` accepts a relative or absolute app path. A launch that declares no id for the run's platform is an error, not a cue to switch platforms. On iOS, a successful launch also pins later tree reads to that app until the next raw `tool:` step, so read [The runner tree is not the discovery tree](#the-runner-tree-is-not-the-discovery-tree) when a read describes the wrong screen.
|
|
115
115
|
|