Skip to content

refactor: replace Maestro compat with typed direct engine#1217

Open
thymikee wants to merge 36 commits into
mainfrom
feat/typed-maestro-engine
Open

refactor: replace Maestro compat with typed direct engine#1217
thymikee wants to merge 36 commits into
mainfrom
feat/typed-maestro-engine

Conversation

@thymikee

@thymikee thymikee commented Jul 11, 2026

Copy link
Copy Markdown
Member

Summary

Replace the production Maestro YAML lowering/replay trampoline with a source-preserving typed program, immutable replay plan, and direct runtime port.

The new engine owns Maestro control flow, variables, target policy, assertions, and lifecycle semantics while reusing shared agent-device gesture and platform backends. The old SessionAction conversion, private __maestro commands, positional decoding, hidden caches, recursive dispatch, and runtime fallback were removed. Android snapshots now fail closed on missing, invalid, stale, or system-chrome-only helper output; persistent-to-command-scoped fallback remains within the same bundled helper contract and never invokes the legacy snapshot engine.

Validation

  • Android API 36 Pixel 9 Pro XL: react-native-pager-view 9/9 in 430.4s; react-navigation 38/38 in 493.3s. Snapshot evidence reported android-helper 0.19.3 with persistent-session transport.
  • iOS 26.2 simulator: react-navigation 38/38 in 814.6s.
  • iOS 26.2 simulator: react-native-pager-view 4/9. All five remaining failures reproduce unchanged with upstream Maestro 2.5.1 on the freshly rebuilt app, including the suite cleanup label mismatch; no agent-device-only divergence remains.
  • Static gates: format, lint, typecheck, layering, fallow, metadata generation, build, provider integration, coverage, Android helper build, and Apple runner build passed. The aggregate affected run hit host-load timeouts in five unrelated files; the isolated rerun passed 187/187.

@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://callstack.github.io/agent-device/pr-preview/pr-1217/

Built to branch gh-pages at 2026-07-14 06:25 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 1.7 MB 1.7 MB +18.8 kB
JS gzip 542.7 kB 547.3 kB +4.6 kB
npm tarball 653.4 kB 658.5 kB +5.2 kB
npm unpacked 2.3 MB 2.3 MB +20.2 kB

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 27.6 ms 27.6 ms +0.0 ms
CLI --help 58.5 ms 58.9 ms +0.3 ms

Top changed chunks:

Chunk Raw diff Gzip diff
dist/src/session.js +22.0 kB +6.0 kB
dist/src/sdk-selectors.js +15.9 kB +5.4 kB
dist/src/internal/daemon.js +2.9 kB +886 B
dist/src/registry.js +1.5 kB +540 B
dist/src/tv-remote.js -816 B -417 B

@thymikee thymikee force-pushed the feat/typed-maestro-engine branch 2 times, most recently from 25a935c to 2260149 Compare July 12, 2026 11:18
@thymikee thymikee force-pushed the agent/unified-gesture-architecture branch 2 times, most recently from c127ba2 to c8cf31f Compare July 13, 2026 09:18
Base automatically changed from agent/unified-gesture-architecture to main July 13, 2026 11:16
@thymikee thymikee force-pushed the feat/typed-maestro-engine branch from 2260149 to 8aaeade Compare July 13, 2026 11:23
@thymikee thymikee force-pushed the feat/typed-maestro-engine branch from 8aaeade to 7352d32 Compare July 14, 2026 04:42
@thymikee thymikee changed the title refactor: add direct Maestro compatibility engine foundation refactor: replace Maestro compat with typed direct engine Jul 14, 2026
@thymikee

Copy link
Copy Markdown
Member Author

CI blocks review on 7352d329:

  • Fallow reports new production-unused exports: MAESTRO_NEW_ISSUE_URL and pointFromPercentInFrame.
  • Provider integration and coverage fail broadly because the bundled Android snapshot-helper artifact is missing; Maestro, Android lifecycle, find, and related scenarios then fail through the real helper-required path.
  • iOS smoke fails testSinglePointerFlingFallsBackToXCTestCoordinateDragWhenPrivateSynthesisFails: all expected fallback metadata is nil, so the changed routing is not exercising the asserted fallback.

These are branch failures requiring owner action, not a readiness review. Please address them and update the head; review should resume only after the relevant checks pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant