refactor(provider-limrun): ship Limrun as the `@agent-device/limrun` plugin
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Refactoring
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- android, ios, node.js, typescript
- Bereich
- developer-experience, mobile
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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(renamepackages/provider-limrun), ESM with@limrun/apias a regulardependenciesentry, not bundled: users then get Limrun andundicisecurity fixes on reinstall or through their ownoverrides, without an agent-device release. Remove the@limrun/apialwaysBundle/neverBundleentries and the@limrun/xdelta3-wasmomission alias fromtsdown.config.ts; the plugin's install size (about 4.1 MB for@limrun/apiplusundiciandws) is accepted. Manifest declaresprovider: "limrun", theconnectioncapabilities core hardcodes today (supportsDeferredAppSelection,supportsDirectPortReverse), andcredentialVariablescovering the account and instance variables. Core's per-platform fingerprint narrowing (readLimrunCredentialValuesby 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 inplugins.md. ProviderPluginHostgains what Limrun needs beyond Doublespeed'shost.apple: the Android ADB adapters (createInteractor, port reverse, app listing, logcat, keyboard state) anddownloadFile/archiveDirectory. Keep the SDK declaration small; prefer onehost.androidfacet mirroringsrc/sdk/limrun-runtime-dependencies.ts.connect limrunmoves into the plugin'sconnection.resolve/verify, including the instance-variable validation and the--devicerefusal. Core deleteslimrun-profile.ts,provider-limrun-credentials.ts,provider-limrun-runtime.ts, thelimrunbranches inprovider-policy.ts,provider-credential-fingerprint.ts,provider-device-runtimes.ts, and theprovider_runtime_skippedpartial-instance handling, or moves them behind the plugin seam.- Public API:
agent-device/limrunis 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-limrunpasses.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
undicibundled for its own callers (MaestrorunScriptHTTP, provision-kit install downloads), so core stays free of runtimedependencies. After the move,pnpm why -r undicishows@limrun/apiresolvingundicionly inside the plugin's dependency tree, and core's bundled copy is pinned only by the root, maestro, and provision-kit manifests (noundici@7override, 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).
- Vorherrschende Sprache
- TypeScript
- Sterne
- 5.2k
- Forks
- 359
- Ø Merge
- 13 Std. 23 Min.
- Gemergte PRs (30 T.)
- 655
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus callstack/agent-device
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readEvtl. vergeben @pcbeingused333 hat das vor 2 Tagen übernommen. Offenbug ready-for-agent
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
callstack/agent-device#4018 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
callstack/agent-device#1869 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 18/100
callstack/agent-device#4179 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Daemon: refuse leased requests that name no session at request admissionEvtl. vergeben @airowe hat das heute übernommen. Offenbug ready-for-agent
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
callstack/agent-device#4171 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement needs-triage
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
callstack/agent-device#4162 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in callstack/agent-device
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
unocss/unocss#5421 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-area
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Azure/typespec-azure#5936 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 72/100
vercel-labs/scriptc#2910 ·
Maintainer antworten meist innerhalb von 1 Tag
-
automation missing-model model-sync provider:fireworks-ai
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
anomalyco/models.dev#12458 ·
Maintainer antworten meist innerhalb von 1 Tag