0.22: extract replay and test into a vetted first-party plugin
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 24/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- node.js, typescript
Hướng nghiên cứu
Start with ADR 0034 for plugin lifecycle and failure isolation, then read ADR 0012, 0015, 0016, and 0017 alongside #3377's Maestro extraction work. Map the current replay and suite entry points, plugin contract, backend seam, and CI device lanes before proposing package boundaries. Done means the listed CLI, MCP, compatibility, recovery, and script-preservation conditions are validated; the issue does not identify specific source files or tests.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Purpose
Ship replay and its lightweight test runner as an optional, first-party plugin in 0.22. Keep agent-device focused on device automation, while preserving explicit .ad workflows and agent-supervised repair for their users. Goal-based test orchestration and replay caching can remain in frameworks such as TesterArmy e2e; this extraction must not replace deterministic .ad execution with model-driven behavior.
Required behavior
- Keep
replay,test, replay export, their flags, and the relevant help/MCP/client schemas discoverable without installing executable plugin code. Label optional capabilities as plugins that require separate installation. - Keep a bundled catalog of vetted capability/package declarations. Use one declaration for help and missing-plugin recovery. The catalog describes capabilities; the runtime registry remains the authority for installed and working implementations. Do not infer an npm package from an unknown command or provider.
- When the plugin is absent, fail before device actions with a typed
plugin-not-installedreason, the exact package and installation command, and instructions to retry the original invocation with its arguments intact. For example, the error details include{ reason: "plugin-not-installed", package: "<chosen first-party package>", installCommand: "agent-device plugins add <chosen first-party package>" }. - Distinguish a missing installation from a selected package that fails loading, validation, or setup, and from a running daemon that retains an older plugin set. Preserve typed failure details and give the corresponding repair or restart instructions. Do not install packages or terminate sessions automatically.
- Preserve existing
.adsyntax, variable handling, source bundles, target identity verification, divergence reports, resume, session retention, repair transactions, timeouts, cancellation, suite results, reporters, and artifact behavior after explicit installation. Preserve all supported platform routes, including desktop platforms. - Keep sessions, device dispatch, selector/ref authority, recording authority, policy enforcement, cancellation, and cleanup with their existing core owners. Extract replay execution, suite orchestration, and format engines through explicit host contracts; do not give a plugin parallel ownership of session state.
- Specify the recording boundary: ordinary
open/close --save-scriptcapture remains usable in core; replay-specific repair requires the replay plugin. Keep shared.addata contracts independent of the executable engine. - Extend the plugin contract for replay capabilities instead of making a replay engine pretend to be a device provider. Integrate the separate replay-backend seam with managed plugin loading and lifecycle ownership. Do not retain a hidden bundled replay engine or silently fall back to a different engine.
- Choose and document the first-party package names, supported core/plugin version range, compatibility checks, and maintainer-owned validation before publication. Define where plugins must be installed when a client uses a remote or embedded daemon; local installation must not imply remote availability.
Observable completion conditions
- A clean core install lists the optional replay/test capability in help without importing its implementation.
- Missing-plugin text and JSON errors give an executable installation command and continuation instructions. CLI, MCP, and typed-client paths preserve the same failure classification.
- After installation, representative existing
.adscripts and suites work without rewriting; repair/resume and Maestro routes preserve their contracts. - Missing, broken, incompatible, and stale-daemon cases have distinct, tested recovery paths; unknown names do not produce guessed installation commands.
- Core no longer bundles replay execution, suite orchestration, or format engines. Package-closure evidence demonstrates the split without expanding startup imports or adding interaction round trips/captures.
- CI explicitly installs the required first-party plugins. Replay compatibility, provider integration, target-identity guarantees, and device lanes still exercise the extracted implementation.
- CLI help, plugin docs, migration instructions, owning ADRs, and package/layering checks describe the 0.22 boundaries. Existing scripts need installation, not a syntax migration.
Dependencies and sequencing
- Build on the TestMu help and missing-plugin guidance fix linked by its PR.
- Coordinate with #3377, which owns Maestro engine extraction and its existing backend seam. Share contracts and package loading rather than introducing competing registries or duplicating its work.
- Coordinate with #3309, #3310, and #3311 for provider catalog entries and with #3759 for removal of superseded plugin APIs in 0.22.
- Read ADR 0012 for replay identity, divergence, resume, and repair, ADR 0015 for Maestro behavior/performance, ADR 0016/0017 for recording, and ADR 0034 for plugin lifecycle and failure isolation.
- Ngôn ngữ chính
- TypeScript
- Star
- 5.1k
- Fork
- 339
- Merge trung bình
- 12 giờ 57 phút
- Pull request đã merge (30 ngày)
- 653
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của callstack/agent-device
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
callstack/agent-device#3945 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Limrun iOS fill reports success but drops non-ASCII textCó thể đã có người làm @mvanhorn đã nhận 4 ngày trước. Đang mởbug ready-for-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 87/100
callstack/agent-device#3819 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
callstack/agent-device#1869 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
iOS keyboard capture can race dismissal and omit the input assistant barCó thể đã có người làm @shamilovtim đã nhận hôm nay. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 51/100
callstack/agent-device#3957 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
iOS fill can report TEXT_ENTRY_MISMATCH before the confirmation deadlineCó thể đã có người làm @shamilovtim đã nhận hôm nay. Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
callstack/agent-device#3952 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của callstack/agent-device
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 70/100
microsoft/playwright#43640 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
grasshopper-protocol/grsshppr#172 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Tencent/teamai-cli#1397 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
DouyinFE/semi-design#3641 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
Maintainer thường phản hồi trong vòng 1 ngày