Defer Droid CLI validation and discovery so startup no longer spawns or hangs on droid. - Register the Droid provider without boot-time validation or model discovery side effects. - Trigger CLI validation only when a Droid stream starts and expose explicit model discovery. - Add regression coverage for non-interactive droid process spawning and startup probe behavior. - Add a patch changeset for the published Fusion CLI package. Files changed: .changeset/fn-6911-droid-cli-no-boot-spawn.md | 5 ++ .../commands/__tests__/droid-cli-extension.test.ts | 15 +++- packages/droid-cli/index.ts | 33 ++++---- packages/droid-cli/src/__tests__/index.test.ts | 90 +++++++++------------- .../src/__tests__/discover-models.test.ts | 7 +- .../src/__tests__/probe.test.ts | 8 ++ .../src/__tests__/process-manager.test.ts | 74 ++++++++++++++++++ .../src/__tests__/startup-probes.test.ts | 5 +- 8 files changed, 160 insertions(+), 77 deletions(-) Fusion-Task-Id: FN-6911 Fusion-Task-Lineage: ef4bc3df-bfe8-416a-b701-64f752faea30
Droid Runtime Plugin
First-class Droid runtime/provider plugin (@fusion-plugin-examples/droid-runtime).
Purpose
This package is the canonical home for Droid-specific runtime behavior, including:
- provider id
droid-cli - model discovery + normalization
- CLI subprocess streaming + session resume
- MCP tool bridge + thinking effort mapping
- probe contract via
probeDroidBinary
Runtime + Provider
- Runtime ID:
droid - Display name:
Droid Runtime - Provider surface preserved:
Factory AI — via Droid CLI(droid-cli)
Core implementation files live in src/:
runtime-adapter.tsprovider.tsprocess-manager.tsprobe.ts- prompt/tool/thinking/control helpers
Dashboard UI contribution surfaces
The plugin registers uiSlots for:
settings-provider-cardsettings-integration-cardonboarding-provider-cardonboarding-setup-helppost-onboarding-recommendation
Compatibility with @fusion/droid-cli
packages/droid-cli is now a thin compatibility shim. It keeps the historical pi-extension entrypoint, but delegates runtime/provider behavior to this plugin package.