Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#3,311 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Refactorisation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
android, ios, node.js, typescript

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
TypeScript
Étoiles
5.1k
Forks
339
Merge moyen
12 h 53 min
PR mergées (30 j)
644

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de callstack/agent-device

Toutes les issues de callstack/agent-device

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.