Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

refactor(provider-limrun): ship Limrun as the `@agent-device/limrun` plugin

オープン
#3,311 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
リファクタリング
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
android, ios, node.js, typescript

調査の方向性

Start with #2112 and its Doublespeed plugin route, then read packages/provider-limrun, src/sdk/limrun-runtime-dependencies.ts, src/provider-limrun-credentials.ts, and scripts/check-provider-plugin.mjs. Decide how per-backend credential fingerprinting survives the plugin boundary and record the choice in plugins.md. Completion includes the specified daemon and provider-scenario tests passing against the plugin factory, a reduced default-install size report, and live iOS and Android sessions with the packed plugin.

索引モデルが issue の本文から書いたものです。

説明

needs-triage refactor

Purpose and evidence

0.22 stops bundling hosted device providers with the default installation. Limrun is the largest bundled provider and the only one with a public SDK surface: packages/provider-limrun (about 9 kLOC with tests), @limrun/api dev-bundled through tsdown.config.ts (with the @limrun/xdelta3-wasm omission alias), the agent-device/limrun export (src/sdk/limrun.ts, LimrunRuntime, session types documented in client-api.md), the LIMRUN_*/LIM_*_INSTANCE_* credential reader in src/provider-limrun-credentials.ts, the Android ADB and Apple host adapters in src/sdk/limrun-runtime-dependencies.ts, and connect limrun in src/cli/connection/limrun-profile.ts. Doublespeed (#2112) is the template for a direct instance provider as a plugin: it returns { runtime, platformModule, connection } and receives Apple helpers through host.apple.

Required behavior and boundary

  • New publishable package @agent-device/limrun (rename packages/provider-limrun), ESM with @limrun/api as a regular dependencies entry, not bundled: users then get Limrun and undici security fixes on reinstall or through their own overrides, without an agent-device release. Remove the @limrun/api alwaysBundle/neverBundle entries and the @limrun/xdelta3-wasm omission alias from tsdown.config.ts; the plugin's install size (about 4.1 MB for @limrun/api plus undici and ws) is accepted. Manifest declares provider: "limrun", the connection capabilities core hardcodes today (supportsDeferredAppSelection, supportsDirectPortReverse), and credentialVariables covering the account and instance variables. Core's per-platform fingerprint narrowing (readLimrunCredentialValues by lease backend) must survive: either the manifest grows a per-backend credential declaration or the plugin keeps a fingerprint hook; decide in the PR and record it in plugins.md.
  • ProviderPluginHost gains what Limrun needs beyond Doublespeed's host.apple: the Android ADB adapters (createInteractor, port reverse, app listing, logcat, keyboard state) and downloadFile/archiveDirectory. Keep the SDK declaration small; prefer one host.android facet mirroring src/sdk/limrun-runtime-dependencies.ts.
  • connect limrun moves into the plugin's connection.resolve/verify, including the instance-variable validation and the --device refusal. Core deletes limrun-profile.ts, provider-limrun-credentials.ts, provider-limrun-runtime.ts, the limrun branches in provider-policy.ts, provider-credential-fingerprint.ts, provider-device-runtimes.ts, and the provider_runtime_skipped partial-instance handling, or moves them behind the plugin seam.
  • Public API: agent-device/limrun is removed from the core exports (breaking, called out in the 0.22 release notes) or re-pointed at the plugin package; client-api.md, limrun.md, device-clouds.md, plugins.md, help topics, and the README follow.
agent-device plugins add @agent-device/limrun
export LIMRUN_API_KEY=...
agent-device connect limrun --platform android

Completion and validation

  • node scripts/check-provider-plugin.mjs packages/provider-limrun passes.
  • src/__tests__/limrun-runtime.test.ts, the Limrun daemon tests (http-server-limrun-uploaded-apps, provider-credentials, lease-expiry) and the provider-scenario suites run against the plugin factory.
  • Size report shows the default install dropping the Limrun runtime and @limrun/api.
  • Core keeps undici bundled for its own callers (Maestro runScript HTTP, provision-kit install downloads), so core stays free of runtime dependencies. After the move, pnpm why -r undici shows @limrun/api resolving undici only inside the plugin's dependency tree, and core's bundled copy is pinned only by the root, maestro, and provision-kit manifests (no undici@7 override, as since #3363).
  • One live Limrun iOS and one Android session with the packed plugin, recorded in the PR.

Dependencies and readiness

Blocked by: #2112 landing (shapes host.apple and the direct-provider plugin route) and the BrowserStack/AWS extractions in this milestone. After both Limrun and Doublespeed are plugins, #2616/#2624 (shared app-log poller) and the other mirrored modules (facts runtime, interaction operations, deployment runtime) can be extracted into a shared instance-provider kit without touching core.

Effort: L. Risk: high (public SDK surface, host adapters, credential fingerprint semantics).

主要言語
TypeScript
スター
4.9k
フォーク
328
平均マージ
12時間 18分
マージ済み PR(30日)
538

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

callstack/agent-device のほかの issue

callstack/agent-device の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。