Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

feat: workspace-scoped device pinning (lock a project to one device)

Đang mở
#2,161 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
48/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ệ
typescript
Lĩnh vực
cli, mobile-dev

Hướng nghiên cứu

Bắt đầu bằng cách theo dõi việc chọn thiết bị cho các mutation mở, không có session như boot và install, cùng với việc chọn dựa trên inventory. Đọc phần trợ giúp CLI hiện tại và cách xử lý xung đột lựa chọn, sau đó xác định cách devices và doctor có thể hiển thị một pin đang hoạt động. Hoàn tất khi các lệnh đã được pin không bao giờ fallback, các selector xung đột đều thất bại với thông tin chi tiết có cấu trúc, và escape hatch được tài liệu hóa.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

needs-triage

Motivation

User feedback (local-environment, client project):

I had tons of issues with agent-device always trying to open iPhone simulator (default) when I really wanted the session to be scoped to a particular iPad only when I was working with real client's project. Solved it by wrapping every agent-device command with my custom bash script. I think simlock might be a good tool to enforce that.

Today the only way to target a specific device is to pass --platform/--device/--udid/--serial on every invocation. When an agent (or human) forgets, inventory selection falls back to its booted-device heuristics and picks the default iPhone simulator — on a client project that is not a nuisance but a correctness failure. Users are resorting to wrapper scripts to enforce scoping.

This is adjacent to but distinct from #1320: device claims fence other worktrees' daemons off a device; they do nothing to stop your own commands from selecting the wrong device. Enforcement of user intent at selection time is the missing piece.

Proposal

A workspace-scoped device pin that both defaults and enforces:

  • A pin source, in precedence order: env (AGENT_DEVICE_PIN-style selector) and/or a per-workspace config the daemon/CLI reads from the project root. The repo currently has no project config file surface, so the env form may be the v1.
  • Selector-less commands inherit the pin: open com.example.app targets the pinned iPad, never the default iPhone.
  • Commands with an explicit selector that CONTRADICTS the pin fail with a structured error naming the pin and its source — consistent with the #1880 principle that selection conflicts fail instead of retargeting. (An explicit selector that refines the pin — same device — passes.)
  • devices/doctor surface the active pin so agents can discover why selection is constrained.
  • The error and --help text must teach the escape hatch (edit/unset the pin), not invite per-command overrides that defeat the point.

Non-goals

  • Cross-worktree exclusion (that is #1320's device claims).
  • Provider/remote lease semantics.

Acceptance

  • With a pin set and no selector flags, every device-targeting command resolves to the pinned device or fails if it is unavailable — it never falls back to another device.
  • A conflicting explicit selector fails with a structured error naming the pin, its source, and the pinned device.
  • No wrapper scripts required: the pin is honored by open, sessionless mutations (boot, install, ...), and inventory-based selection alike.
Ngôn ngữ chính
TypeScript
Star
4.9k
Fork
328
Merge trung bình
11 giờ 49 phút
Pull request đã merge (30 ngày)
585

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của callstack/agent-device

Tất cả issue của callstack/agent-device

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.