refactor(provider-limrun): ship Limrun as the `@agent-device/limrun` plugin
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Refatoração
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- android, ios, node.js, typescript
- Domínio
- developer-experience, mobile
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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).
- Linguagem predominante
- TypeScript
- Estrelas
- 5k
- Forks
- 334
- Merge médio
- 12h 2min
- PRs com merge (30d)
- 678
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de callstack/agent-device
-
`devices` reports a phantom Android emulator named after the emulator's crashdata INFO bannerTalvez já em andamento @airowe assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
callstack/agent-device#3716 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
callstack/agent-device#1869 ·
Mantenedores costumam responder em até 1 dia
-
backlog refactor
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 8/100
callstack/agent-device#3759 ·
Mantenedores costumam responder em até 1 dia
-
backlog enhancement needs-triage
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 8/100
callstack/agent-device#3758 ·
Mantenedores costumam responder em até 1 dia
-
enhancement ready-for-agent
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 15/100
callstack/agent-device#3757 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de callstack/agent-device
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
polarsource/polar#15580 ·
Mantenedores costumam responder em até 1 dia
-
accepted bug via-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
pingdotgg/t3code#20931 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug/1-unconfirmed kind/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 83/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ranxianglei/billion-context#3583 ·
Mantenedores costumam responder em até 1 dia