Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#3,311 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
android, ios, node.js, typescript

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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).

Lingua principale
TypeScript
Stelle
4.9k
Fork
328
Merge medio
12h 18m
PR unite (30g)
561

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di callstack/agent-device

Tutte le issue di callstack/agent-device

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.