@bastani/atomic 0.9.56 → 0.9.57

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/CHANGELOG.md +24 -0
  5. package/dist/builtin/subagents/package.json +1 -1
  6. package/dist/builtin/subagents/skills/agent-desktop/SKILL.md +83 -0
  7. package/dist/builtin/web-access/package.json +1 -1
  8. package/dist/builtin/workflows/CHANGELOG.md +12 -0
  9. package/dist/builtin/workflows/builtin/adversarial-verification.js +3 -3
  10. package/dist/builtin/workflows/builtin/{chunk-49kkbdpr.js → chunk-2f1shjah.js} +1 -1
  11. package/dist/builtin/workflows/builtin/{chunk-dcxscfnb.js → chunk-37gm3bzk.js} +1 -1
  12. package/dist/builtin/workflows/builtin/{chunk-2jfst7e4.js → chunk-45fn5q5p.js} +1 -1
  13. package/dist/builtin/workflows/builtin/{chunk-hx8v4p97.js → chunk-4ek3v2wm.js} +1 -1
  14. package/dist/builtin/workflows/builtin/{chunk-z3pajrfs.js → chunk-8d40nyz9.js} +1 -1
  15. package/dist/builtin/workflows/builtin/{chunk-qhm35ntx.js → chunk-g3b2zf8r.js} +2 -2
  16. package/dist/builtin/workflows/builtin/{chunk-6jpwc09k.js → chunk-h6bt0r0g.js} +2 -2
  17. package/dist/builtin/workflows/builtin/{chunk-9cm2ckq2.js → chunk-x25rjw4y.js} +4 -4
  18. package/dist/builtin/workflows/builtin/{chunk-apagcs4r.js → chunk-xqcy5nve.js} +1 -1
  19. package/dist/builtin/workflows/builtin/{chunk-w4xp1w1f.js → chunk-yb55w6me.js} +1 -1
  20. package/dist/builtin/workflows/builtin/{chunk-k5q3t7je.js → chunk-yjgfnbgd.js} +1 -1
  21. package/dist/builtin/workflows/builtin/classify-and-act.js +3 -3
  22. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +3 -3
  23. package/dist/builtin/workflows/builtin/generate-and-filter.js +3 -3
  24. package/dist/builtin/workflows/builtin/goal.js +3 -3
  25. package/dist/builtin/workflows/builtin/index.js +11 -11
  26. package/dist/builtin/workflows/builtin/loop-until-done.js +3 -3
  27. package/dist/builtin/workflows/builtin/open-claude-design.js +3 -3
  28. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  29. package/dist/builtin/workflows/builtin/steering-context.js +1 -1
  30. package/dist/builtin/workflows/builtin/tournament.js +3 -3
  31. package/dist/builtin/workflows/package.json +1 -1
  32. package/dist/builtin/workflows/src/extension/index.bundle.mjs +7 -7
  33. package/dist/builtin/workflows/src/extension/local-worker-entry.mjs +4 -4
  34. package/dist/builtin/workflows/src/index.js +4 -4
  35. package/dist/builtin/workflows/src/local-worker-entry.mjs +4 -4
  36. package/dist/core/system-prompt.d.ts.map +1 -1
  37. package/dist/core/system-prompt.js +2 -3
  38. package/dist/core/system-prompt.js.map +1 -1
  39. package/docs/computer-use.md +119 -98
  40. package/docs/getting-started/first-session.md +1 -1
  41. package/docs/skills.md +2 -2
  42. package/docs/usage.md +1 -1
  43. package/docs/workflows/authoring.md +105 -141
  44. package/docs/workflows/verification.md +14 -13
  45. package/npm-shrinkwrap.json +32 -32
  46. package/package.json +3 -3
  47. package/dist/builtin/subagents/skills/cua-driver/BROWSER.md +0 -562
  48. package/dist/builtin/subagents/skills/cua-driver/EMBEDDING.md +0 -685
  49. package/dist/builtin/subagents/skills/cua-driver/LINUX.md +0 -412
  50. package/dist/builtin/subagents/skills/cua-driver/MACOS.md +0 -996
  51. package/dist/builtin/subagents/skills/cua-driver/README.md +0 -123
  52. package/dist/builtin/subagents/skills/cua-driver/RECORDING.md +0 -132
  53. package/dist/builtin/subagents/skills/cua-driver/RUNTIME.md +0 -115
  54. package/dist/builtin/subagents/skills/cua-driver/SKILL.md +0 -108
  55. package/dist/builtin/subagents/skills/cua-driver/VISUAL.md +0 -125
  56. package/dist/builtin/subagents/skills/cua-driver/WINDOWS.md +0 -832
  57. package/dist/builtin/subagents/skills/cua-driver/WORKFLOW.md +0 -226
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.57] - 2026-10-31
6
+
7
+ ### Changed
8
+
9
+ - Atomic's computer-use guidance now routes native desktop apps, menus, OS dialogs and non-Chromium desktop browsers to `agent-desktop` instead of Cua Driver; websites, Mobile Safari and CDP-exposing apps stay with `agent-browser`. Workflow code that owns a desktop scenario calls the `agent-desktop` CLI from `ctx.tool` (it has no TypeScript SDK), with a readiness preflight that ends the run as `blocked` when a permission or the Linux accessibility bus is missing. The [Computer use](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/docs/computer-use.md) guide covers installing it, permissions on each OS, and what it cannot cover: apps with no accessibility tree, and native iOS and Android apps, which need native mobile tooling.
10
+
11
+ ## [0.9.57-alpha.1] - 2026-10-31
12
+
13
+ ### Changed
14
+
15
+ - Atomic's computer-use guidance now routes native desktop apps, menus, OS dialogs and non-Chromium desktop browsers to `agent-desktop` instead of Cua Driver; websites, Mobile Safari and CDP-exposing apps stay with `agent-browser`. Workflow code that owns a desktop scenario calls the `agent-desktop` CLI from `ctx.tool` (it has no TypeScript SDK), with a readiness preflight that ends the run as `blocked` when a permission or the Linux accessibility bus is missing. The [Computer use](https://github.com/bastani-inc/atomic/blob/main/packages/coding-agent/docs/computer-use.md) guide covers installing it, permissions on each OS, and what it cannot cover: apps with no accessibility tree, and native iOS and Android apps, which need native mobile tooling.
16
+
5
17
  ## [0.9.56] - 2026-10-30
6
18
 
7
19
  The newest fixes from upstream pi: tool search, WSL, updates and MCP.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/intercom",
3
- "version": "0.9.56",
3
+ "version": "0.9.57",
4
4
  "private": true,
5
5
  "description": "Atomic extension providing a private coordination channel between parent and child agent sessions. Fork of: https://github.com/nicobailon/pi-intercom",
6
6
  "contributors": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/mcp",
3
- "version": "0.9.56",
3
+ "version": "0.9.57",
4
4
  "private": true,
5
5
  "description": "Atomic's pi-compatible MCP integration for server connections, OAuth, tools, resources, and terminal management.",
6
6
  "contributors": [
@@ -2,6 +2,30 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.57] - 2026-10-31
6
+
7
+ Desktop computer use moves from Cua Driver to agent-desktop.
8
+
9
+ - **agent-desktop for native apps:** the bundled computer-use skill is now `agent-desktop`, which drives native desktop apps, menus and OS dialogs on macOS, Windows and Linux through their accessibility trees. Install it with `npm install -g agent-desktop`; the skill loads guides that match the installed version ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
10
+ - **Workflow code:** a workflow that owns a desktop scenario calls the `agent-desktop` CLI from `ctx.tool`, checks readiness first, and ends the run as `blocked` when a permission or the Linux accessibility bus is missing ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
11
+ - **Coverage that changed:** agent-desktop reads accessibility trees, not pixels, and has no native iOS or Android support; use `xcrun simctl`, Appium or `adb` for native mobile apps. `ATOMIC_CUA_AUTO_APPROVE` no longer has any effect ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
12
+
13
+ ### Changed
14
+
15
+ - The bundled computer-use skill is now `agent-desktop` (vercel-labs/agent-desktop v1.0.2) instead of `cua-driver`. It drives native desktop apps on macOS, Windows and Linux through their accessibility trees. Install the CLI with `npm install -g agent-desktop`; check readiness with `agent-desktop status`, and on macOS grant Accessibility with `agent-desktop permissions --guide`. The skill tells the agent to load `agent-desktop skills get desktop` and `agent-desktop skills get platform`, which always match the installed CLI. agent-desktop does not match pixels, so apps that expose no accessibility tree, native iOS apps in the Simulator and Android emulators no longer have a bundled route; use `xcrun simctl`, Appium or `adb` for native mobile apps. `ATOMIC_CUA_AUTO_APPROVE` no longer has any effect.
16
+
17
+ ## [0.9.57-alpha.1] - 2026-10-31
18
+
19
+ Desktop computer use moves from Cua Driver to agent-desktop.
20
+
21
+ - **agent-desktop for native apps:** the bundled computer-use skill is now `agent-desktop`, which drives native desktop apps, menus and OS dialogs on macOS, Windows and Linux through their accessibility trees. Install it with `npm install -g agent-desktop`; the skill loads guides that match the installed version ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
22
+ - **Workflow code:** a workflow that owns a desktop scenario calls the `agent-desktop` CLI from `ctx.tool`, checks readiness first, and ends the run as `blocked` when a permission or the Linux accessibility bus is missing ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
23
+ - **Coverage that changed:** agent-desktop reads accessibility trees, not pixels, and has no native iOS or Android support; use `xcrun simctl`, Appium or `adb` for native mobile apps. `ATOMIC_CUA_AUTO_APPROVE` no longer has any effect ([#4134](https://github.com/bastani-inc/atomic/pull/4134))
24
+
25
+ ### Changed
26
+
27
+ - The bundled computer-use skill is now `agent-desktop` (vercel-labs/agent-desktop v1.0.2) instead of `cua-driver`. It drives native desktop apps on macOS, Windows and Linux through their accessibility trees. Install the CLI with `npm install -g agent-desktop`; check readiness with `agent-desktop status`, and on macOS grant Accessibility with `agent-desktop permissions --guide`. The skill tells the agent to load `agent-desktop skills get desktop` and `agent-desktop skills get platform`, which always match the installed CLI. agent-desktop does not match pixels, so apps that expose no accessibility tree, native iOS apps in the Simulator and Android emulators no longer have a bundled route; use `xcrun simctl`, Appium or `adb` for native mobile apps. `ATOMIC_CUA_AUTO_APPROVE` no longer has any effect.
28
+
5
29
  ## [0.9.46] - 2026-10-27
6
30
 
7
31
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/subagents",
3
- "version": "0.9.56",
3
+ "version": "0.9.57",
4
4
  "private": true,
5
5
  "description": "Atomic extension for delegating tasks to subagents with parallel execution. Fork of: https://github.com/nicobailon/pi-subagents",
6
6
  "contributors": [
@@ -0,0 +1,83 @@
1
+ ---
2
+ allowed-tools: Bash(agent-desktop:*), Bash(npx agent-desktop:*)
3
+ description: Operate native desktop applications on macOS, Windows and Linux through accessibility trees with the agent-desktop CLI. Use when an AI agent must see or act on a desktop GUI, such as clicking buttons, filling forms, reading UI state, navigating menus, toggling checkboxes, scrolling, dragging, typing text, pressing shortcuts, taking screenshots, managing windows, using the clipboard, launching or closing apps, handling OS dialogs and permission prompts, or reading notifications. Triggers include requests to "operate the desktop", "computer use", "click a button in an app", "fill a native form", "read the UI", "open an app", "snapshot an app" or any native desktop GUI task. For websites and web apps use agent-browser instead.
4
+ hidden: true
5
+ metadata:
6
+ github-path: skills/agent-desktop
7
+ github-ref: refs/tags/v1.0.2
8
+ github-repo: https://github.com/vercel-labs/agent-desktop
9
+ github-tree-sha: 08884bafcd7a8d0a9a3757a7ab2ba238e1d5bf2a
10
+ name: agent-desktop
11
+ ---
12
+
13
+ # agent-desktop
14
+
15
+ agent-desktop is a CLI that lets an AI agent observe and operate desktop apps through the OS accessibility tree. It is a tool, not an agent. Every command prints one JSON envelope (`ok`, `data` or `error`). The observe, act and verify loop runs in you.
16
+
17
+ ## Install and permissions
18
+
19
+ If `agent-desktop` is not on `PATH`, make one bounded attempt to install it: `npm install -g agent-desktop` (Node 18 or later; macOS 13+, Windows 10 1809+ or Ubuntu 24.04+, on x64 or arm64), then `agent-desktop version`. If npm blocks install scripts, approve them (`npm install-scripts approve agent-desktop` on npm 12, `npm install -g agent-desktop --allow-scripts=agent-desktop` on npm 11) so each call does not start Node first. Report what the install did. If it fails, report the command and the error instead of switching to another tool. Atomic bundles this skill, so do not run `npx skills add` for it.
20
+
21
+ `agent-desktop status` is the readiness check. On macOS, `permissions.accessibility` must be `granted`, and `screen_recording` too for `screenshot`: run `agent-desktop permissions --guide` and let the user approve it. Windows needs no grant for apps at the terminal's integrity level. On Linux, run inside the user's graphical session; an empty `supported_surfaces` means the AT-SPI bus did not answer. Never script around a consent dialog.
22
+
23
+ For web pages use `agent-browser`. For the web contents of a Chromium or Electron app you launch, `agent-desktop launch <app> --cdp` opens a debugging port that `agent-browser connect <port>` drives (see `commands-system`).
24
+
25
+ ## Shell syntax
26
+
27
+ Examples use a POSIX shell. In PowerShell, quote every ref (`'@s8f3k2p9:e1'`), because a bare `@token` is the splatting operator. Use `$env:NAME = 'value'` instead of `export`, and `| ConvertFrom-Json` instead of `$(...)` and `jq`. The Windows skill has the PowerShell forms.
28
+
29
+ ## First run
30
+
31
+ 1. Run `agent-desktop status`. It reports the platform, permissions and `supported_surfaces`.
32
+ 2. Run `agent-desktop skills get platform`. It loads the skill for the OS the binary runs on (macOS, Windows or Linux).
33
+ 3. For flags and syntax, run `agent-desktop <command> --help`. This skill does not repeat flag lists.
34
+
35
+ ## The loop
36
+
37
+ Use `find` when you know the role or exact name. Otherwise map the app first and drill into one region.
38
+
39
+ ```
40
+ agent-desktop snapshot --skeleton --app "Notes" -i --compact # shallow map, children_count on cut branches
41
+ agent-desktop snapshot --root @s8f3k2p9:e3 -i --compact # drill into one region
42
+ agent-desktop click @s8f3k2p9:e12 # act on a qualified ref
43
+ agent-desktop snapshot --root @s8f3k2p9:e3 -i --compact # verify: re-read the same region
44
+ ```
45
+
46
+ - A small app needs no skeleton. Take a full `snapshot -i`.
47
+ - Never skeleton a surface (`--surface menu`, `sheet`, `alert`). A surface is already focused.
48
+ - An action that opens a menu, sheet or alert lists it in `data.surfaces`. Target that overlay next.
49
+ - After an async step, use `wait` (see `commands-system.md`). A fixed sleep is a race.
50
+
51
+ ## Refs
52
+
53
+ - Output refs are qualified: `@<snapshot_id>:e<N>`, for example `@s8f3k2p9:e1`. Pass them to later commands as they are.
54
+ - Refs are valid for one snapshot. After any UI change, re-drill the affected region or take a new snapshot.
55
+ - Only addressable elements get refs. Static text and inert containers do not.
56
+ - `STALE_REF`: the ref no longer matches the live UI. Take a fresh snapshot and use the new ref.
57
+ - `AMBIGUOUS_TARGET`: more than one live element matches. Narrow the target with `find --role --name --exact` or `--root`, then use the new ref.
58
+ - `SNAPSHOT_NOT_FOUND`: the snapshot id expired. Snapshot again.
59
+
60
+ ## Delivery and retry
61
+
62
+ Action results carry `data.disposition` and errors carry `error.disposition`, each with `delivery` and `retry`. Observation commands such as `snapshot` have none on success; their errors, and every `INVALID_ARGS` refusal, carry `not_delivered` and `retry: safe`.
63
+
64
+ - Retry or substitute an action only when `disposition.retry` is `safe`. Only `not_delivered` is safe.
65
+ - Any other delivery value means the action may have landed. A repeat can click, type or submit twice, and `toggle` can undo itself.
66
+ - On a result that is not safe, read the live state (`get`, `is`, or a fresh snapshot) and decide from that. `details.post_state` helps when present.
67
+ - Branch on `error.code` and `error.disposition`. Message and suggestion text can change.
68
+ - `details.retryable: false` means waiting cannot change the outcome. Try a different approach.
69
+
70
+ ## Headless and headed
71
+
72
+ Ref actions are headless by default. They use semantic accessibility calls and do not take focus, move the cursor, synthesize keys or use the clipboard. If no semantic path exists, the action fails closed. Use the global `--headed` flag only when the user explicitly permits physical input, such as double-click, hover, drag, or focus. Never switch to headed mode to recover from a headless failure. Raw coordinates (`--xy`) never imply focus. Which actions need `--headed` differs by OS: read the platform skill.
73
+
74
+ ## References
75
+
76
+ Load one only when you need it: `agent-desktop skills get desktop <reference>`.
77
+
78
+ | Reference | Open it when |
79
+ |-----------|--------------|
80
+ | `commands-observation` | You need `snapshot`, `find`, `get`, `is`, `screenshot`, `list-surfaces` semantics, partial trees, or the `--root` rules |
81
+ | `commands-interaction` | You choose between click, type, set-value, select, toggle, scroll, press and mouse commands, or you debug an action error |
82
+ | `commands-system` | You launch or close apps, manage windows, use the clipboard, `wait`, `batch`, sessions, multi-agent cursors, tracing, or load skills |
83
+ | `workflows` | You want worked patterns (forms, menus, dialogs, waiting for a new window, scroll-find, drag) and the anti-patterns list |
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/web-access",
3
- "version": "0.9.56",
3
+ "version": "0.9.57",
4
4
  "private": true,
5
5
  "description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
6
6
  "contributors": [
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.57] - 2026-10-31
10
+
11
+ ### Changed
12
+
13
+ - Builtin workflow stages verify native desktop changes with `agent-desktop` instead of Cua Driver, and report a missing install, macOS permission or Linux accessibility bus as `blocked`.
14
+
15
+ ## [0.9.57-alpha.1] - 2026-10-31
16
+
17
+ ### Changed
18
+
19
+ - Builtin workflow stages verify native desktop changes with `agent-desktop` instead of Cua Driver, and report a missing install, macOS permission or Linux accessibility bus as `blocked`.
20
+
9
21
  ## [0.9.55] - 2026-10-30
10
22
 
11
23
  Local worker pools on remote databases, and sturdier start-up on busy and Windows machines.
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  adversarial_verification_default
3
- } from "./chunk-apagcs4r.js";
3
+ } from "./chunk-xqcy5nve.js";
4
4
  import"./chunk-2377r57g.js";
5
5
  import"./chunk-n1910xc4.js";
6
- import"./chunk-2jfst7e4.js";
7
- import"./chunk-9cm2ckq2.js";
6
+ import"./chunk-45fn5q5p.js";
7
+ import"./chunk-x25rjw4y.js";
8
8
  export {
9
9
  adversarial_verification_default as default
10
10
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  parse_rubric,
7
7
  normalize_criteria,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  score_progress,
7
7
  classify_trend
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  withSteeringPropagationContext2
3
- } from "./chunk-9cm2ckq2.js";
3
+ } from "./chunk-x25rjw4y.js";
4
4
 
5
5
  // dist/builtin/workflows/src/authoring/workflow.ts
6
6
  import { basename } from "node:path";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  stableArtifactRoot
7
7
  } from "./chunk-rc5ec5xx.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  scoring_prompt_reads,
7
7
  build_scoring_prompt
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  keepContext,
7
7
  REVIEWER_CALIBRATION_RULES,
@@ -24,7 +24,7 @@ import {
24
24
  EVIDENCE_CLOSURE_POLICY,
25
25
  WORKTREE_DISCIPLINE_CONTRACT,
26
26
  REVIEW_CODE_DELTA_CONTRACT
27
- } from "./chunk-9cm2ckq2.js";
27
+ } from "./chunk-x25rjw4y.js";
28
28
  import {
29
29
  workflowArtifactDirectoryPath,
30
30
  ensureWorkflowArtifactDirectory,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  keepContext,
7
7
  REVIEWER_CALIBRATION_RULES,
@@ -24,7 +24,7 @@ import {
24
24
  EVIDENCE_CLOSURE_POLICY,
25
25
  WORKTREE_DISCIPLINE_CONTRACT,
26
26
  REVIEW_CODE_DELTA_CONTRACT
27
- } from "./chunk-9cm2ckq2.js";
27
+ } from "./chunk-x25rjw4y.js";
28
28
  import {
29
29
  VERIFICATION_SCALE
30
30
  } from "./chunk-n1910xc4.js";
@@ -63,10 +63,10 @@ var WORKER_PREFLIGHT_CONTRACT = [
63
63
  `);
64
64
  var E2E_VERIFICATION_GUIDANCE = [
65
65
  "Verify correctness end-to-end whenever practical for user-visible behavior; an executable scenario is stronger proof than code inspection, unit tests, or stage summaries alone.",
66
- 'For web or frontend flows, including frontend changes whose correctness depends on backend/API behavior, use the agent-browser skill or delegate with `skill: "agent-browser"`; capture snapshot, screenshot, DOM, or network evidence suited to the objective. Prefer agent-browser for what its skill covers, because its text snapshots cost far fewer tokens than screenshot-driven CUA (websites and web apps in Chrome/Chromium, Mobile Safari in the iOS Simulator via `agent-browser -p ios`, Electron desktop apps and other CDP-exposing apps, Slack, cloud browsers); use Cua Driver for anything else, including native iOS apps in the iOS Simulator, Android emulators, OS dialogs, desktop Safari and other non-Chromium browsers, and whenever agent-browser hits a limitation.',
66
+ 'For web or frontend flows, including frontend changes whose correctness depends on backend/API behavior, use the agent-browser skill or delegate with `skill: "agent-browser"`; capture snapshot, screenshot, DOM, or network evidence suited to the objective. Prefer agent-browser for what its skill covers, because its text snapshots cost far fewer tokens than screenshot-driven computer use (websites and web apps in Chrome/Chromium, Mobile Safari in the iOS Simulator via `agent-browser -p ios`, Electron desktop apps and other CDP-exposing apps, Slack, cloud browsers); use agent-desktop for native desktop apps, OS dialogs and browser chrome outside the page, and whenever agent-browser hits a limitation. Native iOS apps in the iOS Simulator and Android emulators are outside agent-desktop: use `xcrun simctl`, Appium/XCUITest or `adb`/UI Automator, and report the gap when none is available.',
67
67
  "For TUI/terminal automation/testing, prefer the herdr skill on macOS, Linux and Windows. Install Herdr if missing when network access and permissions permit; fall back to the tmux skill or native Windows psmux if installation or use is not possible. Preserve the pinned herdr skill's explicit-request and HERDR_ENV=1 requirements; never control a focused session from outside Herdr. Check installed help: psmux uses tmux-style commands, while herdr has its own CLI, not interchangeable flags. Exercise the actual interactive flow and retain pane/text or terminal recording evidence.",
68
- "For desktop and accessible simulator/emulator windows, use Cua Driver: when a model chooses the next action, as in this stage, use the `cua-driver` CLI; when workflow TypeScript code owns the sequence and the postcondition, the @trycua/cua-driver TypeScript SDK inside `ctx.tool` is the face instead. Here, load Atomic's bundled cua-driver skill and drive the exact window with one-shot `cua-driver call <tool>` commands, following the skill's snapshot -> act -> fresh snapshot -> verify loop. Before the first action, ensure the executable (`cua-driver --version`; if missing, one bounded attempt with upstream's one-line executable installer, reporting its side effects; that installer does not install an agent skill). Ignore upstream README's optional skill-install steps: never `cua-driver skills install` or `clawhub install @cua/driver`, and do not link or copy a skill into `~/.agents/skills/cua-driver`; leave any existing user-level skill alone. Ensure telemetry off (run every command with CUA_DRIVER_RS_TELEMETRY_ENABLED=false, and `cua-driver telemetry disable` once after an executable install) and readiness (`cua-driver status`, `cua-driver doctor`, `cua-driver call list_apps`; on macOS also `cua-driver permissions status`, starting a stopped daemon with `open -n -g -a CuaDriver --args serve`) with bounded attempts per docs/computer-use.md. Save each `get_window_state` JSON result and `screenshot_out_file` image to the artifacts directory as evidence. Report a missing macOS Accessibility or Screen Recording grant, a non-interactive Windows session, no graphical Linux session, or a refused/failed install as the stage's blocked/needs_human finding with the exact fix (for macOS: `cua-driver permissions grant`, then toggle CuaDriver on under System Settings -> Privacy & Security -> Accessibility and Screen & System Audio Recording, then relaunch the daemon; for an install: the exact installer command), and re-run the readiness check on resume. Use a dedicated desktop/session and controlled fixtures, inspect snapshots for other windows, and stop before destructive actions. Do not automate an arbitrary physical iPhone without an accessible simulator/emulator/mirroring or native automation setup, or label a Chrome recording as terminal or native iOS proof; an agent-browser `-p ios` session proves Mobile Safari behavior, not a native iOS app.",
69
- "Also skip `cua-driver skills update` and any skill installation into other agent directories such as `~/.claude/skills`; updating the executable is separate from installing or updating a skill.",
68
+ "For native desktop apps and OS dialogs, use agent-desktop: when a model chooses the next action, as in this stage, load Atomic's bundled agent-desktop skill and run one-shot `agent-desktop` commands, following its snapshot -> act -> wait or fresh read -> verify loop; when workflow TypeScript code owns the sequence and the postcondition, call the `agent-desktop` CLI from inside `ctx.tool(name, args, fn, { timeoutMs })` instead, spawning one process per command, parsing its JSON envelope and forwarding `signal`. Before the first action, run `agent-desktop status`, `agent-desktop skills get desktop` and `agent-desktop skills get platform` and follow them; they are compiled into the binary, so they match the installed version. Ensure the executable (`agent-desktop version`; if missing, one bounded attempt with `npm install -g agent-desktop`, approving its install script if npm blocks it, and report its side effects). Atomic bundles the skill: never `npx skills add` it, and do not link or copy a skill into `~/.agents/skills` or other agent directories; leave any existing user-level skill alone. agent-desktop documents no telemetry, so no opt-out setting is needed. Ensure readiness with bounded attempts per docs/computer-use.md: on macOS `permissions.accessibility` granted (and `screen_recording` for screenshots), on Linux a non-empty `supported_surfaces`. Save the snapshot JSON, `screenshot` PNGs and, when a session traces, the `trace export` HTML to the artifacts directory as evidence. Verify each postcondition with `wait --element <ref> --predicate value --value <text>` or a fresh read, never a sleep; a successful action proves delivery, not the effect, and an action is retried only when `disposition.retry` is `safe`. Report a missing macOS permission, a Windows session that is not the interactive desktop, no graphical Linux session or AT-SPI bus, or a refused or failed install as the stage's blocked/needs_human finding with the exact fix (for macOS: `agent-desktop permissions --guide`, then the user approves it; for an install: `npm install -g agent-desktop`), and re-run `agent-desktop status` on resume. Use a dedicated desktop/session and controlled fixtures, inspect snapshots for other windows, and stop before destructive actions. agent-desktop reads accessibility trees and does not match pixels: for a UI that publishes none, a screenshot with `--headed` coordinate input is the only route and needs the user's permission, so say what stayed unverified. It does not drive native iOS or Android apps inside a simulator or emulator: use `xcrun simctl`, Appium/XCUITest or `adb`/UI Automator. Do not automate an arbitrary physical iPhone without an accessible simulator/emulator/mirroring or native automation setup, or label a Chrome recording as terminal or native iOS proof; an agent-browser `-p ios` session proves Mobile Safari behavior, not a native iOS app.",
69
+ "Also never run `npx skills add` for agent-desktop or install a skill into other agent directories such as `~/.claude/skills`; updating the executable is separate from installing or updating a skill.",
70
70
  "Choose tools from observed environment capabilities. Prefer installed/cached tools; install missing tools, runtimes or plugins when online access and permissions permit. Known offline/restricted installation is sufficient evidence not to attempt prohibited downloads; otherwise check capabilities or make one bounded setup attempt. Do not loop on blocked downloads, require production credentials, or take unsafe actions.",
71
71
  "When execution or installation is unavailable, continue available authoritative repository checks and retain useful local evidence. Report the constraint or attempted command with observed output, what could not run, and the narrower validation performed. For non-UI tasks, use relevant executable checks rather than manufacturing a UI scenario. An unavailable optional mechanism is not itself failed implementation or permission to relax required project checks."
72
72
  ].join(`
@@ -80,7 +80,7 @@ var CODE_QUALITY_VERIFICATION_GUIDANCE = [
80
80
  `);
81
81
  var MEDIA_PUBLICATION_GUIDANCE = [
82
82
  "Detect the repository provider and authorized PR/MR/issue/comment target before publishing media. Inspect and redact screenshots/video for secrets, personal information and unrelated windows; tie evidence to the verified commit and scenario. Local evidence collection does not authorize uploads.",
83
- "When creating the PR/MR, gather the image and video evidence the verification stages produced and attach it to the PR body when the provider supports uploads: cua-driver `screenshot_out_file` before/after PNGs from `get_window_state`, agent-browser `screenshot` PNGs and `record` recordings, and any QA proof video. Reference each file in the body next to the scenario it proves (a before/after pair per verified postcondition, one recording per interaction) and keep the window-state JSON as a local artifact the body cites by name. On supported GitHub, pass them at creation: gh pr create --body-file <body.md> --attach 'before.png#State before the action' --attach 'after.png#State after the action' --attach flow.webm; use gh pr edit/comment --attach for evidence produced later.",
83
+ "When creating the PR/MR, gather the image and video evidence the verification stages produced and attach it to the PR body when the provider supports uploads: agent-desktop `screenshot` before/after PNGs, agent-browser `screenshot` PNGs and `record` recordings, and any QA proof video. Reference each file in the body next to the scenario it proves (a before/after pair per verified postcondition, one recording per interaction) and keep the snapshot JSON as a local artifact the body cites by name. On supported GitHub, pass them at creation: gh pr create --body-file <body.md> --attach 'before.png#State before the action' --attach 'after.png#State after the action' --attach flow.webm; use gh pr edit/comment --attach for evidence produced later.",
84
84
  "On GitHub, check gh --version and the chosen command's --help. GitHub CLI >=2.99.0 supports repeatable --attach on gh issue create/edit/comment and gh pr create/edit/comment. Use native attachments when supported, for example gh pr comment <number> --repo <owner/repo> --body-file <body.md> --attach <proof.mp4>. Attach each file once. Body-local path references are rewritten to hosted URLs; otherwise attachments append in flag order. Image path#alt text is supported; video alt text is not. A standalone ![](<local-video-path>) paragraph becomes an embedded player.",
85
85
  "Check current GitHub limits: PNG/JPEG/GIF/WebP/SVG images and MP4/MOV/WebM videos; images/GIFs up to 10 MB, video 10 MB on Free or 100 MB paid. Native attachment upload requires repository write access and supported OAuth/classic PAT auth; GitHub Enterprise Server is unsupported in this release. See https://docs.github.com/en/github-cli/github-cli/attaching-files-with-github-cli.",
86
86
  "Read back the returned PR/issue/comment and confirm usable GitHub-hosted links before claiming attachment success. Unsupported CLI versions, hosts, providers, auth or sizes require a truthful fallback: retain the local artifact and explain authorized manual attachment or supported provider options. Never claim file:// links are uploaded evidence, expose secrets, or upload automatically to unrelated third-party hosts."
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  parse_rubric,
7
7
  normalize_criteria,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
  import {
6
6
  stableArtifactRoot
7
7
  } from "./chunk-rc5ec5xx.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  workflow,
3
3
  withBuiltinContext
4
- } from "./chunk-2jfst7e4.js";
4
+ } from "./chunk-45fn5q5p.js";
5
5
 
6
6
  // dist/builtin/workflows/builtin/open-claude-design.ts
7
7
  import { Type as Type2 } from "typebox";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  DEFAULT_ACTION_CATEGORIES2,
3
3
  classify_and_act_default
4
- } from "./chunk-hx8v4p97.js";
5
- import"./chunk-2jfst7e4.js";
6
- import"./chunk-9cm2ckq2.js";
4
+ } from "./chunk-4ek3v2wm.js";
5
+ import"./chunk-45fn5q5p.js";
6
+ import"./chunk-x25rjw4y.js";
7
7
  export {
8
8
  DEFAULT_ACTION_CATEGORIES2 as DEFAULT_ACTION_CATEGORIES,
9
9
  classify_and_act_default as default
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  fan_out_and_synthesize_default
3
- } from "./chunk-w4xp1w1f.js";
4
- import"./chunk-2jfst7e4.js";
5
- import"./chunk-9cm2ckq2.js";
3
+ } from "./chunk-yb55w6me.js";
4
+ import"./chunk-45fn5q5p.js";
5
+ import"./chunk-x25rjw4y.js";
6
6
  export {
7
7
  fan_out_and_synthesize_default as default
8
8
  };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  generate_and_filter_default
3
- } from "./chunk-z3pajrfs.js";
3
+ } from "./chunk-8d40nyz9.js";
4
4
  import"./chunk-2377r57g.js";
5
5
  import"./chunk-n1910xc4.js";
6
- import"./chunk-2jfst7e4.js";
7
- import"./chunk-9cm2ckq2.js";
6
+ import"./chunk-45fn5q5p.js";
7
+ import"./chunk-x25rjw4y.js";
8
8
  export {
9
9
  generate_and_filter_default as default
10
10
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  goal_default
3
- } from "./chunk-qhm35ntx.js";
3
+ } from "./chunk-g3b2zf8r.js";
4
4
  import"./chunk-zhyqnf5g.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
8
- import"./chunk-2jfst7e4.js";
9
- import"./chunk-9cm2ckq2.js";
8
+ import"./chunk-45fn5q5p.js";
9
+ import"./chunk-x25rjw4y.js";
10
10
  export {
11
11
  goal_default as default
12
12
  };
@@ -1,36 +1,36 @@
1
- import"./chunk-2jfst7e4.js";
2
- import"./chunk-9cm2ckq2.js";
1
+ import"./chunk-45fn5q5p.js";
2
+ import"./chunk-x25rjw4y.js";
3
3
  import"./chunk-n1910xc4.js";
4
4
  import"./chunk-2377r57g.js";
5
5
  import {
6
6
  adversarial_verification_default
7
- } from "./chunk-apagcs4r.js";
7
+ } from "./chunk-xqcy5nve.js";
8
8
  import {
9
9
  classify_and_act_default
10
- } from "./chunk-hx8v4p97.js";
10
+ } from "./chunk-4ek3v2wm.js";
11
11
  import {
12
12
  fan_out_and_synthesize_default
13
- } from "./chunk-w4xp1w1f.js";
13
+ } from "./chunk-yb55w6me.js";
14
14
  import {
15
15
  generate_and_filter_default
16
- } from "./chunk-z3pajrfs.js";
16
+ } from "./chunk-8d40nyz9.js";
17
17
  import {
18
18
  goal_default
19
- } from "./chunk-qhm35ntx.js";
19
+ } from "./chunk-g3b2zf8r.js";
20
20
  import"./chunk-zhyqnf5g.js";
21
21
  import"./chunk-z0d03ktm.js";
22
22
  import {
23
23
  open_claude_design_default
24
- } from "./chunk-k5q3t7je.js";
24
+ } from "./chunk-yjgfnbgd.js";
25
25
  import {
26
26
  loop_until_done_default
27
- } from "./chunk-dcxscfnb.js";
27
+ } from "./chunk-37gm3bzk.js";
28
28
  import {
29
29
  ralph_default
30
- } from "./chunk-6jpwc09k.js";
30
+ } from "./chunk-h6bt0r0g.js";
31
31
  import {
32
32
  tournament_default
33
- } from "./chunk-49kkbdpr.js";
33
+ } from "./chunk-2f1shjah.js";
34
34
  export {
35
35
  adversarial_verification_default as adversarialVerification,
36
36
  classify_and_act_default as classifyAndAct,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  loop_until_done_default
3
- } from "./chunk-dcxscfnb.js";
3
+ } from "./chunk-37gm3bzk.js";
4
4
  import"./chunk-z0d03ktm.js";
5
5
  import"./chunk-n1910xc4.js";
6
- import"./chunk-2jfst7e4.js";
7
- import"./chunk-9cm2ckq2.js";
6
+ import"./chunk-45fn5q5p.js";
7
+ import"./chunk-x25rjw4y.js";
8
8
  export {
9
9
  loop_until_done_default as default
10
10
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  open_claude_design_default
3
- } from "./chunk-k5q3t7je.js";
4
- import"./chunk-2jfst7e4.js";
5
- import"./chunk-9cm2ckq2.js";
3
+ } from "./chunk-yjgfnbgd.js";
4
+ import"./chunk-45fn5q5p.js";
5
+ import"./chunk-x25rjw4y.js";
6
6
  export {
7
7
  open_claude_design_default as default
8
8
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ralph_default
3
- } from "./chunk-6jpwc09k.js";
3
+ } from "./chunk-h6bt0r0g.js";
4
4
  import"./chunk-zhyqnf5g.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
8
- import"./chunk-2jfst7e4.js";
9
- import"./chunk-9cm2ckq2.js";
8
+ import"./chunk-45fn5q5p.js";
9
+ import"./chunk-x25rjw4y.js";
10
10
  export {
11
11
  ralph_default as default
12
12
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  withSteeringPropagationContext2
3
- } from "./chunk-9cm2ckq2.js";
3
+ } from "./chunk-x25rjw4y.js";
4
4
  export {
5
5
  withSteeringPropagationContext2 as withSteeringPropagationContext
6
6
  };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  tournament_default
3
- } from "./chunk-49kkbdpr.js";
3
+ } from "./chunk-2f1shjah.js";
4
4
  import"./chunk-2377r57g.js";
5
5
  import"./chunk-n1910xc4.js";
6
- import"./chunk-2jfst7e4.js";
7
- import"./chunk-9cm2ckq2.js";
6
+ import"./chunk-45fn5q5p.js";
7
+ import"./chunk-x25rjw4y.js";
8
8
  export {
9
9
  tournament_default as default
10
10
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/workflows",
3
- "version": "0.9.56",
3
+ "version": "0.9.57",
4
4
  "private": true,
5
5
  "description": "Atomic extension for multi-stage workflow authoring and execution.",
6
6
  "contributors": [